面试真题

Go · 中等 · 字节跳动

defer的作用与底层原理

中等 Go 🎤 字节跳动
参考答案
结论:defer使函数延迟到当前函数返回前执行,用于资源清理和流程控制;底层由编译器插入runtime调用并维护_defer链表。作用:确保资源释放(如文件、锁)、panic恢复、代码逻辑分离。底层:Go编译器在函数调用defer处插入runtime.deferproc,将defer函数及参数(值拷贝)包装为_defer节点链入Goroutine的defer链表头;函数返回前插入runtime.deferreturn,从链表头遍历执行并移除。Go1.14后基于开放编码优化,直接插入延迟调用代码减少开销。注意:defer表达式参数立即求值,函数体在返回前执行;循环中大量defer可能有性能损耗。
题目整理自公开面经,答案由校招宝自研生成,仅供参考