美文网首页
2019-11-25[Go] 你真的了解defer的执行时机么?

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

作者: itoocs | 来源:发表于2019-11-25 16:35 被阅读0次

    引入: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注册要延迟执行的函数时该函数所有的参数都需要确定其值。
    这里答案是多少呢?大家可以在评论中给出幺?

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

    相关文章

      网友评论

          本文标题:2019-11-25[Go] 你真的了解defer的执行时机么?

          本文链接:https://www.haomeiwen.com/subject/lncjwctx.html