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()。反之不能写入
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
分享标题:defer执行的顺序-创新互联
URL链接:http://pwwzsj.com/article/hhjod.html