下面代码输出什么?
func increaseA() int { var i int defer func() { i++ }() return i } func increaseB() (r int) { defer func() { r++ }() return r } func main() { fmt.Println(increaseA()) fmt.Println(increaseB())}
A. 1 1
B. 0 1
C. 1 0
D. 0 0
参考答案及解析:B。
知识点:defer、返回值。注意一下,increaseA() 的返回参数是匿名,increaseB() 是具名。
func increaseA() int {,返回值i=0的时候已经绑定到返回值里里,defer改i没用了。func increaseB() (r int) {先把返回变量r设为0,defer又把r改为1.