一道考察对golang基本语法了解程度的面试题
判断输出的结果会是什么
1.对于defer关键字,子函数执行结束是在主函数之前的,所以子函数中的延时函数会先被执行
2.对于多个defer的情况,按后进先出执行,从最后一个defer开始往上执行
3.go语言中,return是在defer之前执行的,执行的方式是复制一份值返回
故结果为
再深入一些,引入指针的概念,判断下面两种情况的输出情况
1.使用指针返回i的值
结果变成了1,这也是常见的通过指针在函数内修改变量的方法
2.在i自增时使用指针
就算我们在延时函数中传了指针,由于return先于defer完成,而且return返回时没有使用指针,所以仍然是直接复制i给返回值,所以后续defer中的修改并不影响结果
还有周一的一道面试题
看一眼结果
这道就没那么有趣了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。