Go 高阶函数

Go 高阶函数,go,Go,我试图理解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) } 当我运行它时: 去运行

我试图理解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)
}
当我运行它时:

去运行高阶函数。去

它给出了以下错误:

# 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 )
我期待输出:

“你好,大卫”


:=赋值在函数体之外不起作用


您必须使用var bar=来代替。

短变量声明在函数体之外不起作用,下面是关于它的更多信息

您的问题的有效解决方案可能如下所示:

主程序包
输入“fmt”
func main(){
来电者(酒吧)
}
func调用者(foo func(字符串)字符串){
结果:=foo(“大卫”)
fmt.Println(结果)
}
函数条(s字符串)字符串{
返回“Hello”+s
}