介绍
Go支持匿名函数,匿名函数就是没有名字的函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。
匿名函数使用方式1:
在定义匿名函数时就直接调用,这样匿名函数就只能调用一次。
n := func(a, b int) int{
return a + b
}(1, 2)
fmt.Println(n)
上面就是匿名函数在定义的时候就完成了调用,定义就是func,调用就是传参了,这样就是在定义匿名函数的时候就调用了它。
匿名函数使用方式2:
将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数
n := func(a, b int) int {
return a + b
}
fmt.Println(n(1,2))
//将匿名函数func(abb int)int赋给a变量,则a的数据类型就是函数类型,此时,我们可以通过a完成调用。
这样也实现了在main函数里面再定义了一个函数,也就是函数里面定义了函数。
全局匿名函数:
如果将匿名函数赋给一个全局变量,那么这个匿名函数,就成为一个全局匿名函数,可以在程序有效。
func1就是全局匿名函数,那么这个函数就可以在任何地方使用了。
var (
func1 = func(n1, n2 int) int {
return n1 + n2
}
)
func main() {
n := func1(1,2)
fmt.Println(n)
fmt.Println(reflect.TypeOf(func1)) //func(int, int) int
}