释义:
在golang中,闭包等于环境变量+函数,此处的函数一般皆为匿名函数。
引用传递中的闭包:
func Add(x int) func(int) int{
return func(y int) int{
x += y
return x
}
}
func main() {
res:= Add(1)
res(100)
}
//Add()函数返回值为一个匿名函数,x变量为闭包环境变量,main函数中Add函数接收参数1执行并赋值给了res变量,res变量作为Add返回值匿名函数接收参数100执行。
值传递中的闭包:
func main() {
for i := 0; i < 10; i++ {
go func(x int) {
fmt.Println(x)
}(i)
}
time.Sleep(10 * time.Millisecond)
}
//自增变量i,范围0到9,go关键字起协程执行此匿名函数,最后的()表示直接执行,参数为i。
//此时i就是环境变量。