go defer陷阱
[TOC]
golang defer陷阱
测验
下面程序的输出是什么?
package main
//!+f
func main() {
println(f1())
println(f2())
println(f3())
}
func f1() (r int) {
defer func() {
r++
}()
return 0
}
func f2() (r int) {
t := 5
defer func() {
t = t + 5
}()
return t
}
func f3() (r int) {
defer func(r int) {
r = r + 5
}(r)
return 1
}
答案
如果你的结果是
1
5
1
恭喜你,答对了。这篇文章您不必看了。
如果答错了。请继续阅读