defer執行的順序

defer先進後出
舉例:

package main

import (
    "fmt"
    "os"
    "bufio"
)

//打開文件
func writeFile(filename string) {
    file, err := os.Create(filename)
    if err != nil {
        panic(err)
    }
    //往文件寫內容(直接寫文件會比較慢,所以這裏用bufio。先寫到內存裏,再內存一下寫進去會比較快)
    writer := bufio.NewWriter(file)
    for i := 0; i < 20; i++ {
        fmt.Fprintln(writer, i)
    }
    defer file.Close()
    defer writer.Flush()
}

func main() {
    //tryDefer()
    writeFile("haha.txt")
}

先執行writer.Flush(),再執行file.Close()。反之不能寫入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章