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...