匿名函数
Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。
- eg1
func main() {
a:=10
b:=5
//将闭包函数类型赋值给f
f:=func (c int,d int)int {
return c+d
}
fmt.Println(f(a,b))//15
fmt.Printf("%T",f,)//func(int, int) int
fmt.Printf("%T",f(a,b))//int
}
- eg2
func main() {
//函数调用 将test2的返回值给f
f1:=test12()
//fmt.Printf("%T",f1)
for i:=5;i<=10 ;i++ {
fmt.Println(f1())
}
}
//可以通过匿名函数和闭包 实现函数在栈区的本地化
func test12() func()int{
a:=10
fmt.Printf("init=%d\n",a)
return func() int{
a++
return a
}
}
输出
init=10
11
12
13
14
15
16
- eg3 效果等同eg2
func main() {
a := 10
for i := 5; i <= 10; i++ {
func() int {
a++
fmt.Println(a)
return a
}()
}
}
输出
11
12
13
14
15
16
递归
计算n的阶乘
func main(){
jiecheng(4) //4*3*2*1=24
fmt.Println(sum)
}
var sum int =1
func jiecheng(n int)int{
if n==1{
return sum
}
sum*=n
return jiecheng(n-1)
}
有疑问加站长微信联系(非本文作者)