Go语言错误处理,defer问题
package main import ( "fmt" "os" ) func main() { files, err := os.Open("testqq.txt") defer files.Close() if err != nil { fmt.Printf("Error is:%s", "Game Over!") return } }
这段代码简单打开文件"testqq.txt", 此文件根本就不存在的情况下, defer files.Close()会报错。
因为files是nil, 这个代码是不要判断files是否为nil。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个代码你需要这样写,首先判断错误,然后再defer定义
defer 表示函数退出的时候执行,
当文件不存在时,open就会报错,肯定就不能执行file close操作,
因此你的file close必须是文件成功打开以后,
写法楼上已经指正了