面试题答案
一键面试- 对于原始代码
return i
:- 返回值是
0
。 - 解释:在Go语言中,
return
语句实际上分两步执行。第一步是计算返回值,这里return i
时,i
的值为0
,此时返回值已经确定为0
。然后执行defer
语句,defer
函数func() { i++ }()
会将i
的值加1,但是这个i
值的改变不会影响已经确定的返回值。所以最终函数返回0
。
- 返回值是
- 对于
i = 1; return i
:- 返回值是
1
。 - 解释:首先执行
i = 1
,将i
赋值为1
。然后执行return i
,这时候计算返回值,i
的值为1
,返回值确定为1
。接着执行defer
语句,defer
函数func() { i++ }()
会将i
的值加1,同样,这个i
值的改变不会影响已经确定的返回值。所以最终函数返回1
。
- 返回值是