在任意函數中都可以使用defer關鍵字來延時處理某些操作
1、當執行到defer時,暫時不會執行defer後面的語句,會將defer後面的語句壓入到獨立的棧中
2、當函數執行完畢後,再從defer棧按照先進後出的方式出棧執行
3、在defer語句放入到棧時,也會將相關的值拷貝同時入棧
輸出結果
在38行語句修改了n1的值,但是36行輸出的值依然是修改之前的值(對應上面第3點)
實踐
defer file.Close() //關閉文件流
defer connect.Close() //關閉數據庫連接