转到高阶函数

我想了解 Go 中的高阶函数。我有以下程序:


package main


import "fmt"


func caller(foo func(string) string) {

    result := foo("David")

    fmt.Println(result)

}


bar := func(name string) string {

    return "Hello " + name

}


func main(){

    caller(bar)

}

当我运行它时:


去运行 higher_order_functions.go


它给出了以下错误:


# command-line-arguments

./higher_order_functions.go:10:1: syntax error: non-declaration statement outside function body

./higher_order_functions.go:11:5: syntax error: unexpected return, expecting )

我期待输出:


“你好大卫”


慕沐林林
浏览 86回答 2
2回答

SMILET

:= 赋值在函数体之外不起作用。您必须改用 var bar = 。

鸿蒙传说

短变量声明在函数体之外不起作用,您的问题的有效解决方案可能如下所示,package mainimport "fmt"func main() {    caller(bar)}func caller(foo func(string) string) {    result := foo("David")    fmt.Println(result)}func bar(s string) string {    return "Hello " + s}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go