當前位置: 首頁>>編程語言>>正文


Go語言教程:Defer

返回Go語言教程首頁

概念簡介

Defer 被用來確保一個函數調用在程序執行結束前執行。同
樣用來執行一些清理工作。 `defer` 用在像其他語言中的
`ensure` 和 `finally`用到的地方。

例程代碼


package main

import "fmt"
import "os"

// 假設我們想要創建一個文件,向它進行寫操作,然後在結束
// 時關閉它。這裏展示了如何通過 `defer` 來做到這一切。
func main() {

    // 在 `createFile` 後得到一個文件對象,
    // 我們使用 defer 通過 `closeFile` 來關閉這個文件。
    // 這會在封閉函數 (`main`)結束時執行,就是 `writeFile` 結束後。
    f := createFile("/tmp/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()
}

執行&輸出



# 執行程序,確認這個文件在寫入後是已關閉的。
go run defer.go
creating
writing
closing

課程導航

學習上一篇:Go語言教程:Panic    學習下一篇:Go語言教程:組合函數

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/defer

Go語言Defer

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3971.html,未經允許,請勿轉載。