码迷,mamicode.com
首页 > 其他好文 > 详细

defer执行的顺序

时间:2019-01-20 15:56:49      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:不能   UNC   name   file   panic   imp   main   writer   pack   

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

defer执行的顺序

标签:不能   UNC   name   file   panic   imp   main   writer   pack   

原文地址:http://blog.51cto.com/5660061/2344746

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!