Go語言優雅設計之 defer 延遲

2021-07-02 12:27:20 字數 512 閱讀 1734

defer是go語言中的乙個關鍵字,意為"延遲",可以在乙個函式中新增多個defer語句,這些被定義的defer語句會在函式返回時逆序執行。

理解和熟練掌握defer的使用會讓我們**更加優雅簡潔。

下面舉一例子作簡要介紹:

需求:寫一段**開啟乙個檔案並進行某些操作,完成後關閉檔案。

不用defer的寫法:

func readwrite() bool

if a<-1

file.close()

return true

}使用defer的寫法:

func readwrite() bool

if a<-1

return true

}有木有發現**量少了?

再舉一例,倒序列印 5 4 3 2 1

使用defer的寫法 :

for i:=1 ;i<=5 ;i++

注意:多次呼叫defer , defer採用後進先出的堆疊模式,所以上例的結果是 :5 4 3 2 1

go語言 defer 高階

go語言defer語句的用法 defer後面必須是函式呼叫語句,不能是其他語句,否則編譯器會出錯。package main import log func foo n int int func main 這個例子中defer後面使用的是n 指令,不是乙個函式呼叫語句,編譯器就報錯 command l...

go語言 defer 高階

go語言defer語句的用法 defer後面必須是函式呼叫語句,不能是其他語句,否則編譯器會出錯。package main import log func foo n int int func main 這個例子中defer後面使用的是n 指令,不是乙個函式呼叫語句,編譯器就報錯 command l...

Go語言defer學習小結

延時呼叫函式語法 defer func name param list defer func 關鍵字defer修飾的函式,值得關注的有以下幾點 1 函式會被推遲到包含這個defer語句的函式即將返回前才被呼叫執行。這點需要理解defer的工作機制,大致為defer出現的地方,插入指令call run...