defer 有执行顺序吗?
来源:17-8 重构与运行

拧壶冲
2020-10-20
defer file.Close()
defer writer.Close()
类似这样的地方很多,都是golang的最佳实践,但是我有注意到我们有在同一个方法体内多次defer,有先后顺序嘛?从下至上的执行defer吗?多个defer的情况下,有没有什么best practices要遵循?
写回答
1回答
-
有的,就是“从下至上”,或者说先进后出的顺序。
best practice是你一旦分配了资源,只要分配这一步没有错,就要立刻defer close。顺序不用特别考虑,绝大部分情况下先进后出的顺序正好符合我们的要求。
012020-10-21
相似问题