14.15 Defer 语句
defer 语句由以下内容组成:
defer 关键字,后跟
(非括号)函数或方法调用表达式。
在这个例子中,doHeavyWork 函数先被调用,然后在 doSomething 返回之前,cleanUp 被调用。
与表达式语句一样,某些内置函数不能在 defer 语句中使用。
当 defer 语句在函数中执行时,给定函数/方法的调用将被延迟到封装函数返回之前。
更精确地说:
每次“defer”语句执行时,
函数值和调用的参数在语句执行点被求值并保存,并且
封装函数返回之前,
所有延迟的函数按照它们被延迟的相反顺序被调用,使用保存的值。
如果延迟的函数有任何返回值,则它们将被丢弃。这种行为与表达式语句相同。
请注意,与延迟的函数参数不同,封闭的变量在函数调用时而不是在 defer 语句执行时被求值。
最后更新于