十一、GO语言的defer

在任意函数中都可以使用defer关键字来延时处理某些操作

 

1、当执行到defer时,暂时不会执行defer后面的语句,会将defer后面的语句压入到独立的栈中

2、当函数执行完毕后,再从defer栈按照先进后出的方式出栈执行

3、在defer语句放入到栈时,也会将相关的值拷贝同时入栈

 输出结果

在38行语句修改了n1的值,但是36行输出的值依然是修改之前的值(对应上面第3点)

 

实践

defer file.Close()   //关闭文件流

defer connect.Close() //关闭数据库连接

posted @ 2021-08-12 11:01  安心晨  阅读(37)  评论(0编辑  收藏  举报