Golang的defer
- Golang
- 时间:2022-02-19
- 68人已阅读
简介Golang的defer
为什么需要defer?
在函数中,程序员经常需要创建资源(比如:数据库连接,文件句柄,锁等),为了在函数执行完毕后,及时的释放资源,
func test(){
connect = openDatabase()
defer connect.close()
//其他代码
}
Go的设计者提供了defer(延时机制)
在defer栈中遵循先入后出的机制
func test(){
defer fmt.Println(3)
defer fmt.Println(2)
defer fmt.Println(1)
fmt.Println("hello")
}
//以上先输出hello,再输出1 ,接着输出2,最后输出 3
在defer将语句放入栈时,也会将相关的值拷贝入栈
以上结果为 hello 6 5 13 1 2 3