我正在学习 Go,所以我尝试编写一个应用,从 JSON API 获取一些数据并将其放入文件中。我写了一个函数来检查我的文件是否存在,如果不存在,则创建它。
func ensureFileExists(filePath string) {
f, err := os.Open(storageFile)
defer func() {
err := f.Close()
if err != nil {
fmt.Printf("fail to close file %q, error: %q", filePath, err)
return
}
fmt.Printf("file %q closed", filePath)
}()
if err != nil {
if os.IsNotExist(err) {
f, err = os.Create(storageFile)
if err != nil {
panic(err)
}
return
}
panic(err)
}
}
我的考虑是:
这是正确的方法吗?
当文件未打开(由 ,, ...)时调用是一件坏事,我应该只在错误检查后调用它吗?defer f.Close()
Open
Create
这与上一个问题有点相关,假设调用中的文件不需要关闭,因为返回了错误,因此无需将结果分配给新变量并单独关闭它,对吗?os.Open
os.Create
当失败时该怎么办,除了放置一些日志或忽略它之外,还有什么可做的吗?f.Close()
MMMHUHU
相关分类