本文實例講述了GO語言Defer用法。分享給大家供大家參考。具體分析如下:
defer:調用一個被 defer 的函數時在函數剛要返回之前延遲執行,當函數無論怎樣返回,某資源必須釋放時,可用這種與眾不同、但有效的處理方式。傳統的例子包括解鎖互斥或關閉文件。
這樣延遲一個函數有雙重優勢:一是你永遠不會忘記關閉文件,此錯誤在你事后編輯函數添加一個返回路徑時常常發生。二是關閉和打開靠在一起,比放在函數尾要清晰很多。
fileurl := os.Getenv("HOME")
filename := fileurl+"/test.txt"
fmt.Println(Contents(filename))
}
我們可以更好的利用被延遲執行函數時特點
)
func trace(s string) string {
fmt.Println("entering:", s)
return s
}
func un(s string) {
fmt.Println("leaving:", s)
}
func a() {
defer un(trace("a"))
fmt.Println("in a")
}
func b() {
defer un(trace("b"))
fmt.Println("in b")
a()
}
func main() {
b()
}
希望本文所述對大家的Go語言程序設計有所幫助。
新聞熱點
疑難解答