Go面试题更新 2026-08-03

在 Go 语言中,多个 defer 语句的执行顺序是怎样的?请说明其具体规则。

考察说明

考查对 Go 语言 defer 机制的理解,特别是其执行顺序规则。

回答思路

  1. 【回答框架 1】defer 语句用于延迟执行函数调用,当函数返回或发生 panic 时,defer 中的调用被执行。
  2. 【回答框架 2】多个 defer 语句按照后进先出的顺序执行,即最后声明的 defer 最先执行。
  3. 【回答框架 3】defer 中的函数参数在声明时被求值,而非执行时;但函数体内引用的变量在调用时取值。
  4. 【关键点 1】defer 的执行顺序是 LIFO(后进先出)。
  5. 【关键点 2】defer 参数即时求值,函数体延迟执行。
  6. 【关键点 3】defer 常用于资源释放、错误处理等场景。
  7. 【易错点 1】误认为 defer 按顺序执行。
  8. 【易错点 2】忽略 defer 参数即时求值可能导致逻辑错误。