golang的defer精析

chen yuwen ·
我觉得应该是这样的: ``` 1.fmt.Println("r:", r) // 此时 r 还是空的,即为0值 2.r = 1 3.func(0)// 与楼上的区别在这里,从结果来看,这里r=0, r的值是在defer语句所在的地方时决定里,所以defer的是func(0),而不是defer的func(r) 4.return ``` 只是对应结果的猜测,求大神给标准答案。
#10
更多评论
polaris
社区,需要你我一同完善!
注:如果函数**不是命名返回值**,没有这样的困惑。
#1
qkb_75_go
琴为心声
GO 的 return 过程,好像 LUA 语言呀。 只不过 LUA 不支持 defer 。
#2