1 func doSomething() (rev int) {
2 defer func() {
3 rev++
4 }()
5
6 return 5
7 }
第6行的return 相当于
return rev = 5
defer 声明的匿名函数会在return 之前执行,相当于
rev = 5 // 执行defer方法 rev++ //然后return return
所以结果是6
我把代码做一点点修改
1 func doSomething() (rev int) {
2 v := 10
3 defer func() {
4 v++
5 }()
6
7 return v
8 }
第7行返回的是局部变量v.
return v 相当于 return rev = v
defer 函数里是对局部变量v的操作,所以与返回的rev没有关系。所有执行的结果是:10