我试图了解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 )
我期望输出:
“大卫你好”
答案 0 :(得分:2)
:=分配在功能主体之外不起作用。
您必须改用var bar =。
答案 1 :(得分:0)
简短的变量声明不适用于函数体,这里有更多information。
解决问题的方法可能如下所示,
package main
import "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
}