Go并发编程实战
上QQ阅读APP看书,第一时间看更新

3.4 匿名函数

匿名函数(Anonymous Function)在JavaScript中会经常用到,是没有函数名的一种函数。由于没有函数名,因此一般情况下只能在定义匿名函数时进行即时调用。换句话说,如果某个函数只需要调用一次,即无须重复进行调用,那么可以使用匿名函数。

3.4.1 匿名函数的即时调用

匿名函数可以用即时调用方式进行调用,如示例程序3-5所示。

示例程序3-5 匿名函数的即时调用:chapter03\code05\func.go

在示例程序3-5中,第05行用关键字func定义了一个函数,但是func关键字后并没有指定函数名,因此这个函数是一个匿名函数。这个匿名函数接收2个整数类型的参数,并返回两个整数类型的函数值。定义匿名函数后,可以直接在它的定义后面用(2, 3)进行调用,并将值赋给变量s和m。因此,s的值为2+3=5,m的值为2*3=6。

3.4.2 匿名函数的重复调用

匿名函数还可以实现重复调用的,只需要将匿名函数的定义赋值给一个变量,然后就可以用这个变量当作匿名函数的函数名进行调用了。下面是匿名函数赋值给变量来实现重复调用的示例程序3-6。

示例程序3-6 匿名函数的重复调用:chapter03\code06\func.go

在示例程序3-6中,第05行依然用关键字func定义一个函数,但是func关键字后没有指定函数名,因此这个函数是一个匿名函数。这个匿名函数接收2个整数类型的参数,并返回两个整数类型的函数返回值。和示例程序3-5不同的是,这个匿名定义后并未直接进行调用,而是将其赋值给一个变量f,之后借助这个f就可以实现匿名函数的重复调用。第08行和第11行分别用f(2, 3)和f(3, 7)对匿名函数进行了调用。

注意

在Go语言中,只能将一个匿名函数赋值给变量,而不能将一个命名函数赋值给变量。