面试题答案
一键面试- 原函数返回值及
defer
影响分析:- 返回值:返回值是2。
defer
影响过程:- 当执行到
return ret
语句时,会先计算返回值,此时ret
的值为1,这个1会被暂存起来作为返回值。 - 然后,函数执行结束前,会执行
defer
语句,defer
语句中的ret++
使得ret
的值变为2。但最终返回的是之前暂存的1在defer
执行完毕后被修改为2(因为defer
修改的是同一个ret
变量)。所以最终返回2。
- 当执行到
- 将
defer
语句中的ret++
改为ret += 2
后的返回值:- 返回值:返回值是3。
- 分析:当执行到
return ret
时,ret
的值为1被暂存。接着执行defer
语句,ret += 2
使得ret
的值变为3,最终返回的是之前暂存的1在defer
执行完毕后被修改为3,所以返回3。