一道考察对golang基本语法了解程度的面试题
image.png
判断输出的结果会是什么

1.对于defer关键字,子函数执行结束是在主函数之前的,所以子函数中的延时函数会先被执行
2.对于多个defer的情况,按后进先出执行,从最后一个defer开始往上执行
3.go语言中,return是在defer之前执行的,执行的方式是复制一份值返回
故结果为
image.png

再深入一些,引入指针的概念,判断下面两种情况的输出情况
1.使用指针返回i的值
image.png
结果变成了1,这也是常见的通过指针在函数内修改变量的方法
image.png
2.在i自增时使用指针
image.png
就算我们在延时函数中传了指针,由于return先于defer完成,而且return返回时没有使用指针,所以仍然是直接复制i给返回值,所以后续defer中的修改并不影响结果

还有周一的一道面试题
image.png
看一眼结果
image.png
这道就没那么有趣了


wric
10 声望3 粉丝