例如,
defer profile.Start().Stop()
Run Code Online (Sandbox Code Playgroud)
是否等于:
p := profile.Start()
defer p.Stop()
Run Code Online (Sandbox Code Playgroud)
您可以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.
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Effective Go。