defer 有执行顺序吗?

来源:17-8 重构与运行

拧壶冲

2020-10-20

defer file.Close() defer writer.Close()类似这样的地方很多,都是golang的最佳实践,但是我有注意到我们有在同一个方法体内多次defer,有先后顺序嘛?从下至上的执行defer吗?多个defer的情况下,有没有什么best practices要遵循?

写回答

1回答

ccmouse

2020-10-20

有的,就是“从下至上”,或者说先进后出的顺序。

best practice是你一旦分配了资源,只要分配这一步没有错,就要立刻defer close。顺序不用特别考虑,绝大部分情况下先进后出的顺序正好符合我们的要求。

0
1
拧壶冲
非常感谢!
2020-10-21
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程