在链式方法调用中使用`defer`会发生什么?

例如,

defer profile.Start().Stop()

是否等于:

p := profile.Start()
defer p.Stop()

回答

您可以defer使用一长串方法调用,但只有最后一个函数调用会被推迟,所有其他调用将立即使用该defer语句进行评估。

func foo() {
   defer A().B().C().D().E().F().G().H()
   // Only call to H() is deferred and all other function calls must be 
   // evaluated immediately to reach H.
}

有关更多信息,请参阅Effective Go。


以上是在链式方法调用中使用`defer`会发生什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>