分配给空白标识符会导致 Go 中的资源泄漏吗?

Does the assignment to blank identifier lead to resource leak in Go?

如果我获取一些可关闭的资源(例如*os.File)并将其分配给空白标识符(_)怎么办?根据此 SO answer 无法访问此变量,因此将从生成的程序中优化它 。但是它会正确关闭吗?下面的示例代码。

func check(path string) bool {
    _, err := os.Open(path)
    if err != nil {
        return true
    }
    return false
}

无论你将文件赋值给空白标识符还是命名变量,如果你不Close()显式调用它的方法,它不会被关闭,会泄漏资源。

如果将返回的*os.File赋值给空标识符,则不能引用它,也就不能调用它的Close()方法。所以不要这样做。