Go語言中defer的使用

2021-10-03 17:26:09 字數 699 閱讀 3944

func print(a int) 

func add(a, b int) int

fmt.println(add(4, 3))

上面這段**,defer語句輸出的是4,add返回的值是7。

defer可以用於檔案的開啟和關閉,鎖的開啟和關閉。

package ioutil

func readfile(filename string) (byte, error)

defer f.close()

return readall()

}

上面的**在執行完return語句後,檔案指標f被關閉。

var mu sync.mutex

var m = make(map[string]int)

func lookup(key string) int

上面**先上鎖,進入臨界區,返回m裡key對應的值,然後退出臨界區,解除鎖。

如果函式的返回值有變數名,defer可以用於列印函式返回值。這在debug中有一定用處。

func double(x int) (result int) ()

return x + x

}_ = double(4)

上面的函式會輸出「double(4) = 8"。

go語言中的defer

defer的詞義 延遲 推遲 在go語言中,使用defer關鍵字來延遲乙個函式或者方法的執行 1.defer 函式或方法 乙個函式或方法會被延遲執行 2.defer的使用 a 物件檔案的close 臨時檔案的刪除 b go語言中關於異常的處理,使用panic 和recover panic函式引發的恐...

go語言中的互斥 defer

互斥是傳統的併發程式對共享資源進行訪問控制的主要手段。它由標準庫 包sync中的mutex結構體型別代表。sync.mutex型別 確切地說,是 sync.mutex型別 只有兩個公開方法 lock和unlock。顧名思義,前者被用於鎖定當前的互斥量,而後者則被用來對當前的互斥量進行解鎖。impor...

go語言defer的使用

go語言的defer 延遲執行 語句,是在函式結束前執行,而如果在函式中有多個defer語句時,會像乙個堆疊一樣,先進後出,後進先出。defer語句在進行一些開啟資源的操作時,遇到錯誤需要提前返回,在返回前你需要關閉相應的資源,不然很容易造成資源洩露等問題上很試用。舉個defer語句簡單的使用如下 ...