1. 逆序执行
2. defer声明时会先计算并确定参数的值,推迟的仅仅时函数体内的逻辑
func main() {b()}func a() {defe un(trace("a")) ///初始化 defer 函数的参数,所以输 trace("a")的 结采fmt.Println("a的逻辑代码")}func b() {defe un(trace("b"))fmt.Println("b的逻辑代码")a()}func trace(s string) string {fmt.Println("开始执行",b)return s}func un(s string) {fmt.Println("结束执行",s)return s}/*开始执行bb的逻辑代码开始执行aa的逻辑代码结束执行a结束执行b*/
