golang defer用法
func main() {
bigSlowOperation()
}
func bigSlowOperation() {
defer trace("bigSlowOperation")() // don't forget the extra parentheses
// ...lots of work...
time.Sleep(1 * time.Second) // simulate slow
//operation by sleeping
}
func trace(msg string) func() {
start := time.Now()
log.Printf("enter %s", msg)
return func() {
log.Printf("exit %s (%s)", msg,time.Since(start))
}
}
上述代码执行的结果是
2021/07/20 21:48:44 enter bigSlowOperation
2021/07/20 21:48:45 exit bigSlowOperation (1.0313889s)
问题:defer后面的函数不是延迟执行吗 为啥先执行trace(“bigSlowOperation”)?
推荐文章: