go 闭包函数
go 支持return是函数,相当于(递归函数的意思,一层层返回)
闭包:外层函数里有内层函数,内层函数调用外层函数局部变量(外层函数参数或者定义的变量),并且该外层函数的返回值就是其内层函数,该内层函数和外层函数的局部变量称为闭包结构。
局部变量的生命周期发生改变,过去是随函数结束而销毁。
现在是内层函数需要调用变量,所以变量没有销毁
func main() {
a := info()//返回值是匿名函数,即 a = fun1
fmt.Println("%T\n",a)//返回是匿名函数地址0x10937b0,相当于一个函数
v1 := a()
fmt.Println(v1)//值是1
v2 :=a()
fmt.Println(v2)//值是2
fmt.Println(a())//值是3
/* 调用同一个info()的i变量,i的地址是同一个*/
b :=info()
v3 :=b()
fmt.Println(v3)//值是1
/* 调用另一个info()的i变量,i的地址变了*/
}
func info() func() int{
i:=0
fun1 := func() int{
i++
return i
}
return fun1
或:
return func() int {
i++
return i
}
}

浙公网安备 33010602011771号