golang的defer精析

chen yuwen ·
``` func f3() (r int) { defer func(i int) { fmt.Println("r:", r) fmt.Println("i:", i) i = i + 5 fmt.Println("f3():", i) }(r) fmt.Println("r:", r) return 1 } ``` 调用上面函数f3()时,`fmt.Println("i:", i)`的打印结果是`i:0`,为什么不是`i:1`呢?
#7
更多评论
polaris
社区,需要你我一同完善!
注:如果函数**不是命名返回值**,没有这样的困惑。
#1
qkb_75_go
琴为心声
GO 的 return 过程,好像 LUA 语言呀。 只不过 LUA 不支持 defer 。
#2