面试题答案
一键面试- 返回值:
- 函数
test
的返回值是1
。
- 函数
- defer执行过程:
- 当执行到
return a
语句时,Go语言会先计算返回值,此时a
的值为1
,所以返回值会被暂存为1
。 - 然后执行
defer
语句,defer
函数func() { a = a + 1 }()
被调用,此时a
的值变为2
。 - 但是返回值已经在执行
return
语句时被暂存为1
,所以最终函数返回1
,而不是2
。
- 当执行到
总结:函数test
返回1
,defer
函数在return
语句计算返回值之后执行,修改了局部变量a
的值,但不影响已经确定的返回值。