进入高阶函数

时间:2018-10-28 01:16:28

标签: 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)
}

运行时:

  

开始运行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 )

我期望输出:

  

“大卫你好”

2 个答案:

答案 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
}