4.5 延迟调用

常被用于资源释放、解除锁定以及错误处理等操作。

注意:

  • 延迟调用注册的是调用,必须提供执行所需参数(哪怕为空)。参数值在注册时被复制并缓存起来。如对状态敏感,可改用指针或闭包。
  • 延迟调用可修改当前函数命名返回值,但其自身返回值被抛弃。
  • 多个延迟注册按FILO次序执行。

return和panic语句都会终止当前函数流程,引发延迟调用。另外,return语句不是ret汇编指令,它会先更新返回值。

误用

千万记住,延迟调用在函数结束时才被执行。不合理的使用方式会浪费更多资源,甚至造成逻辑错误。

性能

相比直接用CALL汇编指令调用函数,延迟调用须花费更大代价。这其中包括注册、调用等操作,还有额外的缓存开销。尤其是那些性能要求高且压力大的算法,应避免使用延迟调用。

你可能感兴趣的:(4.5 延迟调用)