请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

1回答

helloei 2018-08-06 17:45:46

defer是做扫尾工作,在最后执行的,在出错后才进行的

1 回复 有任何疑惑可以回复我~
  • 提问者 skeeter_ #1
    那也需要程序能走到defer语句才行吧
    回复 有任何疑惑可以回复我~ 2018-08-14 16:16:17
  • 艾文西 回复 提问者 skeeter_ #2
    defer是程序在函数生命周期结束后栈退出的时候执行的,实际上是把其他语言的函数栈回收工作在golang里面开放给用户自己实现了而已。因此即使出错了defer也会在函数退出的时候被调用,而且是LIFO的顺序。甚至在panic的时候,函数最后也会正常调用defer。
    具体可以参考这篇博客 https://blog.golang.org/defer-panic-and-recover
    回复 有任何疑惑可以回复我~ 2018-08-21 22:12:32
  • weixin_慕虎4362381 回复 提问者 skeeter_ #3
    defer语句必须执行过,才会被最终调用,这个老师整个项目的defer放的位置都不对,可能是他一直用错了没人指出来吧
    回复 有任何疑惑可以回复我~ 2020-08-03 15:10:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信