[Go] golang中defer和return执行顺序
Contents
基本执行顺序
- 返回值赋值:return首先将计算结果赋值给函数的返回值。
- 执行defer链:随后执行所有延迟的defer语句(按“后进先出”顺序)。
- 函数返回:最后函数携带赋值后的返回值正常退出。
关键细节
- defer的执行时机:所有defer语句会在函数返回前执行,无论函数是否因错误提前退出(如panic)。
- panic:defer语句在panic时也会执行。 但后续逻辑及return语句不再执行。
- 参数计算:defer中的参数在语句执行时确定,而非函数返回前。
- 匿名与命名返回值:defer可以修改命名返回值,但无法修改匿名返回值。