go 多个defer调用

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

	*/
}

  

posted on 2021-07-20 11:02  running-fly  阅读(78)  评论(0编辑  收藏  举报

导航