小编典典

等效于Java finalize方法

go

Go中是否有类似java finalize的方法?如果我有一个类似的类型结构

    type Foo struct {
        f *os.File
        ....
    }

func (p *Foo) finalize() {
     p.f.close( )           
}

如何确保在垃圾回收对象时关闭文件?


阅读 292

收藏
2020-07-02

共1个答案

小编典典

runtime.SetFinalizeriirc。但是它被认为是一件坏事,并且不能保证在程序退出之前就可以运行

编辑:如下所述,当前os程序包已runtime.SetFinalizer在文件上调用。但是,SetFinalizer不应该依赖。作为一个示例,我有一个类似文件服务器的应用程序,但我忘记了关闭打开的文件。在GC选取并打开其终结器之前,该过程通常可以获取约300个打开的文件。

2020-07-02