清華尹成帶你實戰GO案例(7)Go Defer

尹成發表於2018-05-21

Go Defer
Defer 用來保證一個函式呼叫會在程式執行的最後被呼叫。通常用於資源清理工作。
package main
import "fmt"
import "os"
// 假設我們想建立一個檔案,然後寫入資料,最後關閉檔案
func main() {
// 在使用createFile得到一個檔案物件之後,我們使用defer
// 來呼叫關閉檔案的方法closeFile,這個方法將在main函式
// 最後被執行,也就是writeFile完成之後
f := createFile("/tmp/defer.txt")
// Windows下面使用這個語句
// f := createFile("D:\\Temp\\defer.txt")
defer closeFile(f)
writeFile(f)
}
func createFile(p string) *os.File {
fmt.Println("creating")
f, err := os.Create(p)
if err != nil {
panic(err)
}
return f
}
func writeFile(f *os.File) {
fmt.Println("writing")
fmt.Fprintln(f, "data")
}
func closeFile(f *os.File) {
fmt.Println("closing")
f.Close()
}


執行結果
creating
writing
closing

使用defer來呼叫closeFile函式可以保證在main函式結束之前,關閉檔案的操作一定會被執行。


網址:http://www.qukuailianxueyuan.io/



欲領取造幣技術與全套虛擬機器資料

區塊鏈技術交流QQ群:756146052  備註:CSDN

尹成學院微信:備註:CSDN


相關文章