package main import "fmt" //结论:在链式调用中,所有defer 会被放到最后执行。第一个调用的defer语句,最后一个执行 func a(){ defer func() { fmt.Println("defer a") }() fmt.Println("a") b() } func b() { defer func() { fmt.Println("defer b") }() fmt.Println("b") c() } func c() { fmt.Println("c") defer func() { fmt.Println("defer c") }() } func main(){ a() /* 输出: a b c defer c defer b defer a */ }