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
*/
}