golang學習筆記 defer 延遲函式

2022-04-11 07:21:43 字數 785 閱讀 7795

語法:

defer function_name()

1)defer在宣告時不會執行,而是推遲執行,在return執行前,倒序執行defer[先進後出],一般用於釋放資源,清理資料,記錄日誌,異常處理等。

2)defer有乙個特性:即使函式丟擲異常,defer仍會被執行,這樣不會出現程式錯誤導致資源不被釋放,或者因為第三方包的異常導致程式崩潰。

3)一般用於開啟檔案後釋放資源的操作,比如開啟乙個檔案,最後總是要關閉的。而在開啟和關閉之間,會有諸多的處理,可能會有諸多的if-else、根據不同的情況需要提前返回

f, = os.open(filename)

defer f.close()

do_something()

if (condition_a)

do_something_again()

if (condition_b)

do_further_things()

package main

import "fmt"

func defertest(number int) int ()

defer func() ()

defer func() ()

return number

}func main()

/*

one: 1

two: 2

three: 3

函式返回值: 0

*/

golang延遲函式defer

golang的defer優雅又簡潔,是golang的亮點之一。defer在宣告時不會立即執行,而是在函式return後,再按照先進後出的原則依次執行每個defer,一般用於釋放資源 清理資料 記錄日誌 異常處理等。下面舉個例子 package main import fmt func deferte...

golang延遲呼叫(defer)

defer特性 關鍵字 defer 用於註冊延遲呼叫。這些呼叫直到 return 前才被執。因此,可以用來做資源清理。多個defer語句,按先進後出的方式執行。defer語句中的變數,在defer宣告時就決定了。defer用途 關閉檔案控制代碼 鎖資源釋放 資料庫連線釋放 defer的觸發packa...

golang基礎 細說defer

defer 匿名函式特性 defer,匿名函式,變數傳遞,陣列array,for迴圈綜合 執行以下 並分析輸出結果 go package main import fmt func main 定義乙個變數fs,型別為乙個陣列,陣列元素的型別是匿名函式func for i 0 i 4 i i從外部傳遞進...