分配给空白标识符会导致 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()
方法。所以不要这样做。
如果我获取一些可关闭的资源(例如*os.File
)并将其分配给空白标识符(_
)怎么办?根据此 SO answer, 无法访问此变量,因此将从生成的程序中优化它 。但是它会正确关闭吗?下面的示例代码。
func check(path string) bool {
_, err := os.Open(path)
if err != nil {
return true
}
return false
}
无论你将文件赋值给空白标识符还是命名变量,如果你不Close()
显式调用它的方法,它不会被关闭,会泄漏资源。
如果将返回的*os.File
赋值给空标识符,则不能引用它,也就不能调用它的Close()
方法。所以不要这样做。