go语言defer关键字的用法
在 Go 中,defer
语句会推迟函数(包括任何参数)的运行,直到包含 defer
语句的函数完成。 通常情况下,当你想要避免忘记任务(例如关闭文件或运行清理进程)时,可以推迟某个函数的运行。
可以根据需要推迟任意多个函数。 defer 语句按逆序运行,先运行最后一个,最后运行第一个。
package main import "fmt" func main() { for i:= 0; i < 5; i++ { defer fmt.Println("defer: ", i) } }
下面是代码输出:
defer: 4 defer: 3 defer: 2 defer: 1 defer: 0
运行上述代码会倒序执行传入 defer
关键字的所有表达式,因为最后一次调用 defer
时传入了 fmt.Println(4)
,所以这段代码会优先打印 4。
defer
传入的函数不是在退出代码块的作用域时执行的,它只会在当前函数和方法返回之前被调用。