在任意函数中都可以使用defer关键字来延时处理某些操作
1、当执行到defer时,暂时不会执行defer后面的语句,会将defer后面的语句压入到独立的栈中
2、当函数执行完毕后,再从defer栈按照先进后出的方式出栈执行
3、在defer语句放入到栈时,也会将相关的值拷贝同时入栈
输出结果
在38行语句修改了n1的值,但是36行输出的值依然是修改之前的值(对应上面第3点)
实践
defer file.Close() //关闭文件流
defer connect.Close() //关闭数据库连接