热门IT资讯网

defer执行的顺序

发表于:2024-11-28 作者:热门IT资讯网编辑
编辑最后更新 2024年11月28日,defer先进后出举例:package mainimport ( "fmt" "os" "bufio")//打开文件func writeFile(filename strin

defer先进后出
举例:

package mainimport (    "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()。反之不能写入

0