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

Hi I am new to golang,

I use defer to close my result set like this.

defer res.Close() 

I would like to check whether res is nil or not before calling res.Close().

I have below code block in the end of the function but it is not invoked when exited due to some error.

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

I would like to know is there any way I could achieve this using defer .

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

Also what is the Idiomatic way for handling these situations?

You can pass to defer a function call, and this can be a function literal :

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

Note that you usually avoid this problem by writing the defer statement right after the resource assignment.