在一个方法中打开了一个文件,但是这个方法调用完之后不能关闭这个文件,不能用defer,怎么在程序退出时关闭
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
在main函数的defer里关闭文件就可以。
package main import( "os" "sync" "time" ) var ( myFile *os.File myLock sync.Mutex ) func Open(file string) error { myLock.Lock() defer myLock.Unlock() f, err := os.Open(file) if err != nil { return err } myFile = f return nil } func main() { defer func() { myLock.Lock() defer myLock.Unlock() if myFile != nil { myFile.Close() myFile = nil } }() time.Sleep(time.Second * 3) }
楼上正解,defer可以帮你搞定的。
这时要正常退出猜行的吧
`单行代码`
在main函数的defer里关闭文件就可以。
楼上正解,defer可以帮你搞定的。
这时要正常退出猜行的吧