Go 的 defer 执行顺序是什么?有哪些常见误区?
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
defer 在函数返回前执行,多个 defer 按后进先出(LIFO)顺序执行——最后一个注册的先执行。常见用途:关闭文件、解锁互斥锁、recover 兜底。误区:① defer 参数在注册时立即求值(值拷贝),想取最终值要用闭包;② defer 里修改返回值要配合命名返回值;③ 循环里不要大量 defer(会堆积到函数结束),用局部函数包一层;④ defer recover() 必须写在匿名函数里。
回复
0 条回复