1. 程式人生 > 其它 >Go-defer

Go-defer

技術標籤:資料庫javasqlpython多程序

defer

在函式執行完後釋放資源。

func main() {
	fmt.Println("add執行完返回了", add(5, 9))

}

//1.當執行到defer時,暫時不執行,會將defer後的語句壓入單獨的棧(defer棧)
//2.當函式執行完畢後,再從defer棧中,先入後出取出執行
//3.defer將語句壓入棧時也把變數值放入棧,後續變動不影響他
func add(a int, b int) int {
	fmt.Println("add開始執行了")
	defer fmt.Println("我是defer", a)
	a++
	a = a + b
	fmt.Println("add執行完了")
	return a
}

最佳實踐(在開啟檔案,資料庫連線,鎖資源之後加上就不用關心什麼時候關閉資源)

func t1() {
	file = openfile("filename")
	defer file.close()
}
func t2() {
	con = opendatabase()
	defer con.close()
}