func main() {
println(DeferFunc1(1))
println(DeferFunc2(1))
println(DeferFunc3(1))
}
func DeferFunc1(i int) (t int) {
t = i
defer func() {
t += 3
}()
return t
}
func DeferFunc2(i int) int {
t := i
defer func() {
t += 3
}()
return t
}
func DeferFunc3(i int) (t int) {
defer func() {
t += i
}()
return 2
}
上面的代码将打印:4 1 3. 谁能解释一下吗?当然DeferFunc1应该返回4。但为什么 willDeferFunc2和will分别DeferFunc3返回1和呢?3这与 Go 中的闭包或变量作用域有关吗?
素胚勾勒不出你
相关分类