2019-11-25[Go] 你真的了解defer的执行时机么?

引入:Go语言中defer的执行时机你真的理解么?

1.png

以上返回值是多少呢?先买个关子,接下来我说下defer的底层执行原理,然后在回答上面的问题。

2.png

文章头那个问题返回多少呢?
A:9 B:10
我想大家也应该得到了正确的答案,正确的答案是 A:9

接下来说下多个defer的执行顺序?先注册的后执行,后注册的先执行。


3.png

上面的答案是:


4.png

接下来在做几道题:


5.png

答案是:foo1=5 foo2=6 foo3=5 foo4=5
注意defer的执行时机?
1:返回值赋值 2:defer执行 3: 真正的返回

但是这里要考虑到返回值赋值时值拷贝时,赋值的是值还是指针。
foo1 foo3 foo4都存在局部变量的值拷贝,因此返回值仍然是5,而foo2在defer里面操作的仍然是返回值x,因此返回6

最后在做一个面试题:


6.png

提示:defer注册要延迟执行的函数时该函数所有的参数都需要确定其值。
这里答案是多少呢?大家可以在评论中给出幺?

声明:如有侵权,请告知删除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容