当我使用 golang 进行一些文件操作时,我首先打开一个文件并将 close() 添加到 defer 列表中,然后我尝试重命名该文件。如果我手动关闭文件,延迟将再次关闭它。如果我等待延迟关闭它,重命名将导致错误,因为它没有关闭是的。代码如下
func main() {
pfile1, _ := os.Open("myfile.log")
defer pfile1.Close() //It will be closed again.
...
...
pfile1.Close() //I have to close it before rename it.
os.Rename("myfile.log", "myfile1.log")
}
我发现了一些丑陋的解决方案,例如创建另一个函数来分隔打开的文件,下面有更好的解决方案吗?
func main() {
var pfile1 *os.File
ugly_solution(pfile1)
os.Rename("myfile.log", "myfile1.log")
}
func ugly_solution(file *os.File) {
file, _ = os.Open("myfile.log")
defer file.Close()
}
陪伴而非守候
largeQ
慕哥6287543
相关分类