gpt4 book ai didi

go - 我们可以在 defer 中编写循环/条件/代码块吗?

转载 作者:数据小太阳 更新时间:2023-10-29 03:30:39 25 4
gpt4 key购买 nike

嗨,我是 golang 的新手,

我像这样使用 defer 来关闭我的结果集。

defer res.Close() 

我想在调用 res.Close() 之前检查 res 是否为 nil

我在函数末尾有下面的代码块,但由于某些错误退出时它没有被调用。

if(res!=nil){
res.Close()
}

我想知道有什么方法可以使用 defer 实现这一点。

defer  if(res!=nil){
res.Close()
}

另外,处理这些情况的惯用方法是什么?

最佳答案

你可以传递给defer一个函数调用,这可以是一个函数字面量:

defer func() {
if res!=nil {
res.Close()
}
}()

请注意,您通常会在资源分配后立即编写 defer 语句来避免此问题。

关于go - 我们可以在 defer 中编写循环/条件/代码块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com