3. 函数类型
Go语言中函数也可以作为变量的类型,也就是说函数可以是参数的类型,也可以是返回值类型,利用%T可以打印出变量类型。
例子如下:
package main
import "fmt"
func add(x,y int) int{
return x+y
}
func main(){
n := add //声明一个add类型变量
fmt.Printf("%T\n",n)//打印n的类型是一个拥有两个int类型参数,返回值也为int类型的函数
fmt.Println(n(1,2)) //相当于调用add(1,2)
}
输出结果:
func(int, int) int
3
4. 匿名函数
匿名函数就是指没有名字的函数。在Go中,允许在使用函数时再定义函数,但函数内部定义的函数只能是匿名函数,否则报错。
但由于匿名函数没有函数名,只有函数体,通常需要将这个匿名函数作为一种参数类型赋值给函数类型的变量。
(1)匿名函数的定义
func(参数列表)(返回参数列表){
函数体
}
匿名函数举例:
package main
import "fmt"
//匿名函数
var f1 = func(x,y int) int{
return x+y
}
func main(){
n := f1(1,2)
fmt.Println(n)
}
输出结果:
3
(2)立即执行函数
当函数只需要调用一次时,可以在函数定义后直接传入参数。
举例如下:
package main
import "fmt"
//匿名函数
var f1 = func(x,y int) int{
return x+y
}
func main(){
n := f1(1,2)
fmt.Println(n)
func(x,y int){
fmt.Println(x+y)
}(1,5)//直接传入x,y的值
}
输出结果:
3
6