Go 學習筆記 延遲執行函式 defer

2021-08-13 20:07:36 字數 591 閱讀 9374

go語言中有種不錯的設計,即延遲(defer)語句,你可以在函式中新增多個defer語句。當函式執行到最後時,這些defer語句會按照逆序執行,最後該函式返回。特別是當你在進行一些開啟資源的操作時,遇到錯誤需要提前返回,在返回前你需要關閉相應的資源,不然很容易造成資源洩露等問題。如下**所示,我們一般寫開啟乙個資源是這樣操作的:

func readwrite() bool 

if failurey

file.close()

return

true

}

我們看到上面有很多重複的**,go的defer有效解決了這個問題。使用它後,不但**量減少了很多,而且程式變得更優雅。在defer後指定的函式會在函式退出前呼叫。

func readwrite() bool 

if failurey

return

true

}

如果有很多呼叫defer,那麼defer是採用後進先出模式,所以如下**會輸出4 3 2 1 0

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

Go 學習筆記 延遲執行函式 defer

go語言中有種不錯的設計,即延遲 defer 語句,你可以在函式中新增多個defer語句。當函式執行到最後時,這些defer語句會按照逆序執行,最後該函式返回。特別是當你在進行一些開啟資源的操作時,遇到錯誤需要提前返回,在返回前你需要關閉相應的資源,不然很容易造成資源洩露等問題。如下 所示,我們一般...

Go 延遲函式 defer 詳解

go 語言中延遲函式 defer 充當著 try.catch 的重任,使用起來也非常簡便,然而在實際應用中,很多 gopher 並沒有真正搞明白 defer return 返回值 panic 之間的執行順序,從而掉進坑中,今天我們就來揭開它的神秘面紗!先來執行下面兩段 package main im...

js延遲執行函式

在js中,延遲執行函式有兩種,settimeout和setinterval,用法如下 settimeout test 2000 2000毫秒後執行test 函式,只執行一次。setinterval test 2000 每隔2000毫秒執行一次test 函式,執行無數次。var interval wi...