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。
这个代码你需要这样写,首先判断错误,然后再defer定义
func main() {
files, err := os.Open("testqq.txt")
if err != nil {
fmt.Printf("Error is:%s", "Game Over!")
return
}
defer files.Close()
}
defer 表示函数退出的时候执行,
当文件不存在时,open就会报错,肯定就不能执行file close操作,
因此你的file close必须是文件成功打开以后,
写法楼上已经指正了
正文完