Go 闭包的使用
package main
import (
"fmt"
)
func Test()int{
var x int
x++
return x
}
//函数的调用添加()就是执行
func main(){
f1:=Test() //Test函数有返回值
f2:=Test()
f3:=Test()
fmt.Println(f1,f2,f3) //函数在每次调用的时候分配内存,调用结束后销毁,f1,f2,f3是依次调用的
fmt.Println("======匿名函数执行的效果======")
f:=func() int{
var i int
i++
return i
}
fmt.Println(f(),f(),f())
fmt.Println("========闭包=======")
var x int
f4 :=func() int {
x += 2
return x
}
fmt.Println(f4(),f4(),f4())
fmt.Println("========闭包的函数操作========")
f5:=Test1() //返回一个匿名函数
fmt.Println(&f5)
fmt.Println(f5(),f5(),f5()) //一次调用函数Test1 多次调用返回的匿名函数
fmt.Println(&f5)
}
func Test1() func() int{
var x int
/* f:=func() int {
x++
return x
}
return f*/
//或者
return func() int {
x++
return x
}
}
GOROOT=C:\Go #gosetup
GOPATH=E:\Gosrc #gosetup
C:\Go\bin\go.exe build -o C:\Users\dell\AppData\Local\Temp\___go_build__go.exe E:/Gosrc/mage/闭包.go #gosetup
C:\Users\dell\AppData\Local\Temp\___go_build__go.exe #gosetup
1 1 1
======匿名函数执行的效果======
1 1 1
========闭包=======
2 4 6
========闭包的函数操作========
0xc000006030
1 2 3
0xc000006030
Process finished with exit code 0