在一个方法中打开了一个文件,但是这个方法调用完之后不能关闭这个文件,不能用defer,怎么在程序退出时关闭
更多评论
在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)
}
```
#1