實例:
file, err := os.Open("writeAt.txt")
if err != nil {
panic(err)
}
defer file.Close()
查看源碼發(fā)現(xiàn),go標準包中,如果打開文件出錯,將返回nil的文件類型,而nil類型的變量調(diào)用Close()方法時本身會發(fā)生panic。源碼:
func OpenFile(name string, flag int, perm FileMode) (*File, error) {
if name == "" {
return nil, &PathError{"open", name, syscall.ENOENT}
}
r, errf := openFile(name, flag, perm)
if errf == nil {
return r, nil
}
r, errd := openDir(name)
if errd == nil {
if flag&O_WRONLY != 0 || flag&O_RDWR != 0 {
r.Close()
return nil, &PathError{"open", name, syscall.EISDIR}
}
return r, nil
}
return nil, &PathError{"open", name, errf}
}