Go 将函数作为值传递,Go语言提供了一些函数式编程功能,如能够将一个函数作为参数传递给其他函数。这看起来像《盗梦空间》中的情形,但提供了强大的功能。从本质上说,Go将函数视为一种类型,因此可将函数赋给变量,以后再通过变量来调用它们。在下面的示例中,将一个函数赋给了变量fn。
func main() {
fn := func() {
fmt.Println("function called")
}
fn()
}
- 使用前面介绍的简短变量赋值运算符将一个函数赋给了变量fn。
- 声明这个函数并将其定义为打印一行文本,让您知道它被调用了。
- 在变量名fn后使用( )调用这个函数。
别忘了,在Go语言中,函数是一种类型,因此可将其传递给其他函数。我们可对前一个示例进行扩展,将变量fn传递给一个函数,并在这个函数中调用它,如程序所示。
package main
import "fmt"
func anotherFunction(f func() string) string {
return f()
}
func main() {
fn := func() string {
return "function called"
}
fmt.Println(anotherFunction(fn))
}
输出结果:
请注意,函数anotherFunction的签名中包含一个子函数签名,这表明这个参数是一个返回字符串的函数。接受函数依然需要声明其返回类型,它可以是任何类型,但这里也是字符串。
酷客教程相关文章:
评论前必须登录!
注册