defer func(参数){}
- 参考代码
func main(){ fmt.Println("================打印顺序===============") a:=1 b:=2 defer calc("1",a,calc("10",a,b)) a=0 defer calc("2",a,calc("20",a,b)) b=1 fmt.Println("a=",a,"b=",b) } func calc(index string, a,b int)int{ ret := a+b fmt.Println(index,a,b,ret) return ret }
- 输出结果
================打印顺序=============== 10 1 2 3 20 0 2 2 a= 0 b= 1 2 0 2 2 1 1 3 4
- 结果分析
- defer运行特点
- 在return之后执行
- 先赋值后放入堆栈
- defer运行特点