go - defer 的可能用例是什么?

标签 go

defer 关键字的实际用途是什么?

例如,而不是这样写:

func main() {
    f := createFile("/tmp/defer.txt")
    defer closeFile(f)
    writeFile(f)
}

我可以这样写:

func main() {
    f := createFile("/tmp/defer.txt")
    writeFile(f)
    closeFile(f)
}

那么,为什么我应该使用它而不是通常放置函数?

最佳答案

延迟函数总是会被执行,即使是在 panic 或 return 语句之后。

在现实世界的代码中,很多事情发生在 Open/Close 类型的调用对之间,而 defer 可以让您在源代码中将它们保持在一起,并且您不必为每个 return 语句重复 Close 调用。

去写一些真正的代码。 defer 的用处不久就会显而易见。

关于go - defer 的可能用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55888988/

相关文章:

csv - 将多行字符串写入 CSV 文件

go - 主golang中的自定义包

go - 为什么CGO的字节缓冲区可以正确读取但写入错误?

go - "unrecognized import path"用 go get

go - shim.GetStateByPartialCompositeKey迭代器在此代码中如何工作?

networking - Go 中的服务器,重定向到标准输出

go - 全局模板数据

google-app-engine - AppEngine 的 datastore.Get() 是否不验证所请求 key 的命名空间?

go - CGO,如何将NULL参数传递给C函数

types - 为什么 Go 有几种不同的整数类型?