Go语言闭包的小例子
例子1
package main import ( "fmt" ) func main() { f := closer(10) //fmt.Println(f(1)) //fmt.Println(f(2)) f(1) f(2) } func closer(x int) func(int) int { fmt.Printf("%p\n", &x) return func(y int) int { fmt.Printf("%p\n", &x) return x + y } }打印结果是:
0x118400e8 0x118400e8 0x118400e8
例子2
package main import ( "fmt" ) func main() { for i := 0; i < 3; i++ { defer func() { fmt.Println(i) }() } }打印结果是:
3 3 3
例子3
package main import ( "fmt" ) func main() { var fs = [4]func(){} for i := 0; i < 4; i++ { defer fmt.Println("defer i =", i) defer func() { fmt.Println("defer closure i=", i) }() fs[i] = func() { fmt.Println("close i = ", i) } } for _, f := range fs { f() } }打印结果:
close i = 4 close i = 4 close i = 4 close i = 4 defer closure i= 4 defer i = 3 defer closure i= 4 defer i = 2 defer closure i= 4 defer i = 1 defer closure i= 4 defer i = 0
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。