GO語言延遲函式defer用法分析

2021-07-24 16:00:21 字數 804 閱讀 7725

defer 在宣告時不會立即執行,而是在函式 return 後,再按照 filo (先進後出)的原則依次執行每乙個 defer,一般用於異常處理、釋放資源、清理資料、記錄日誌等。這有點像物件導向語言的析構函式,優雅又簡潔,是 golang 的亮點之一。

**1:了解 defer 的執行順序

package main

import "fmt"

func fn(n int) int ()

defer func() ()

defer func() ()

return n //沒有做任何事情

}func main()

輸出:

1st: 1

2st: 2

3st: 3

函式返回值: 0

**2:經典應用例項

func copyfile(dst, src string) (w int64, err error) 

defer srcfile.close() //每次申請資源時,請習慣立即申請乙個 defer 關閉資源,這樣就不會忘記釋放資源了

dstfile, err := os.create(dst)

if err != nil

defer dstfile.close()

return io.copy(dstfile, srcfile)

}

defer 還有乙個重要的特性,就是即便函式丟擲了異常,也會被執行的。 這樣就不會因程式出現了錯誤,而導致資源不會釋放了。

Go 延遲函式 defer 詳解

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

Go語言入門 延遲呼叫 defer

func functionname parameterlist returntypes 語句defer想當前函式註冊乙個稍微執行的函式呼叫,它會在主調函式或者方法返回之前但是其返回值 當返回值存在 計算後執行。存在多個defer語句採用後進先出lifo last in first out 的順序執行...

go語言的defer用法

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