原文:https://golangbot.com/first-class-functions/
欢迎访问 Golang 教程33教程系列.
什么是头等函数?
支持头等函数的语言允许将函数分配给变量,作为参数传递给其他函数并从其他函数返回。 Go就支持这一功能。
在本教程中, 我们将讨论头等函数的语法和各种用例。
匿名函数
让我们从一个将函数
赋给变量
的简单示例开始。
package main
import (
"fmt"
)
func main() {
a := func() {
fmt.Println("hello world first class function")
}
a()
fmt.Printf("%T", a)
}
在上面的程序中, 我们在第8行给变量a
分配了一个函数。这是将函数
赋给变量
的语法。如果仔细看, 分配给a
的函数是没有名称的。这种函数称为匿名函数
, 因为它们没有名称。
调用此函数的唯一方法是使用变量a
。我们在下一行使用a()
调用了该函数, 并打印 hello world first class function
。在第12行, 我们打印变量a
的类型。这将打印函数func()。
运行此程序将输出
hello world first class function
func()
也可以调用匿名函数而不将其赋给变量。让我们看看下面的示例中如何完成此操作。
package main
import (
"fmt"
)
func main() {
func() {
fmt.Println("hello world first class function")
}()
}
在上面的程序中, 匿名函数
是在第8行定义的, 在函数定义之后, 我们在第10行使用()
来调用函数。这个程序将输出:
hello world first class function
也可以像其他函数一样将参数传递给匿名函数。
package main
import (
"fmt"
)
func main() {
func(n string) {
fmt.Println("Welcome", n)
}("Gophers")
}
在上面的程