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