开发者社区> 问答> 正文

Golang 打开文件需要关闭吗??报错

这个问题稍微有点蠢,因为文件成功打开当然要关闭,但是如果打开报错了呢,需要关闭吗?

file, err := os.Open("file.go") // For read access.
if err != nil {
	// handling err
}



这个defer语句应该在if之前还是if之后呢?

展开
收起
爱吃鱼的程序员 2020-06-08 19:59:36 817 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    一般来说,在打开之后,紧接着就是关闭。建议在if之前。

    file,err:=os.Open("file.go")//Forreadaccess.iferr!=nil{//handlingerr}deferfile.Close()

    如果发生了error,file可能引起空指针错误。放后面好。

    1.defer的语句不是按顺序执行的,是在函数返回的时候前才会执行。

    2.看了下file.close的代码:

    func(f*File)Close()error{iff==nil{returnErrInvalid}returnf.file.close()}

    会先判断,不会抛异常

    所以,你放if前if后影响不大

    2020-06-08 19:59:54
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载