我们可以延迟编写循环/条件/代码块吗?

时间:2016-11-16 09:47:20

标签: go resultset exit-code

嗨,我是golang的新手,

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

defer res.Close() 

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

您可以传递给函数调用defer,这可以是函数文字:

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

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