我们可以在 defer 中编写 loops/conditions/block 的代码吗?
Can we write loops/conditions/block of code in a defer?
嗨,我是 golang 的新手,
我像这样使用 defer 来关闭我的结果集。
defer res.Close()
我想在调用res.Close()
之前检查是否res is nil
。
我在函数末尾有以下代码块,但由于某些错误退出时未调用它。
if(res!=nil){
res.Close()
}
我想知道有什么方法可以使用 defer
实现此目的。
defer if(res!=nil){
res.Close()
}
此外,处理这些情况的惯用方法是什么?
你可以传递给defer
一个函数调用,这可以是一个函数字面量:
defer func() {
if res!=nil {
res.Close()
}
}()
请注意,您通常会在资源分配后立即编写 defer
语句来避免此问题。
嗨,我是 golang 的新手,
我像这样使用 defer 来关闭我的结果集。
defer res.Close()
我想在调用res.Close()
之前检查是否res is nil
。
我在函数末尾有以下代码块,但由于某些错误退出时未调用它。
if(res!=nil){
res.Close()
}
我想知道有什么方法可以使用 defer
实现此目的。
defer if(res!=nil){
res.Close()
}
此外,处理这些情况的惯用方法是什么?
你可以传递给defer
一个函数调用,这可以是一个函数字面量:
defer func() {
if res!=nil {
res.Close()
}
}()
请注意,您通常会在资源分配后立即编写 defer
语句来避免此问题。