我们先通过一个实例简单的说明:
package main
import (
"fmt"
)
func main() {
a:=1
fmt.Printf("当前a的值为:%v \n",a)
defer fmt.Printf("defer打印了a的值为: %v \n",a)
defer fmt.Println("执行了defer输出")
a=2
fmt.Printf("改变了a的值后打印为: %v \n",a)
}
运行结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/921342d968774b1998368e3d6c601ade.png)
总结:
1.defer 只会在当前函数和方法返回之前被调用。
2.defer 类似堆,先进后出。
3.defer 打印的变量,不会随着后面变量的改变而改变。