defer

defer的特性

  • defer的statement总是在其他statement执行之后执行
  • 存在多个defer,遵循后进先出LIFO顺序
  • defer的statement即使在发生panic的情况下仍然会执行

defer和return的执行顺序

return 语句先计算并确定返回值(或赋值给具名返回变量),然后执行 defer,最后函数真正返回。

如果函数返回值是匿名的,defer 无法修改最终返回的结果,因为函数返回的是数值。 如果函数返回值是具名的,defer 可以修改它,因为具名返回值本质上是一个函数作用域内的变量。


Comments