【Golang系列】-defer语句
2022-03-16
defer语句
defer语句会将其后面跟随的语句 进行延迟处理,在defer归属的函数即将返回时,将延迟处理的语句按defer定义的逆序进行执行,也就是说,先被defer的语句最后执行,最后被defer的语句,最先被执行。
特性:
- 关键字defer用于注册延迟调用
- 这些调用直到return前才被执行,因此,可以用来做资源清理
- 多个defer按照先出后进的方式执行
- defer中的变量,在defer声明时候就决定了
defer的用途:
- 关闭文件句柄
- 锁资源释放
- 数据库链接释放
示例:
package main
import "fmt"
func main() {
fmt.Println("start...")
defer fmt.Println("step1")
defer fmt.Println("step2")
defer fmt.Println("step3")
fmt.Println("end...")
}
结果:
[Running] go run "/Users/lihui/Desktop/gocode/src/chapter07/demo03.go"
start...
end...
step3
step2
step1
[Done] exited with code=0 in 0.963 seconds