2016-11-16 6 views
-1

こんにちは、私はゴランの新人です。ループ内にループ/条件/ブロックを書くことはできますか?

私はこのような結果セットを閉じるためにdeferを使用します。

defer res.Close() 

私はres.Close()を呼び出す前res is nilかどうかをチェックしたいと思います。

私は以下のコードブロックを関数の最後に持っていますが、何らかのエラーのために終了したときに呼び出されません。

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

deferを使用してこれを実現する方法はありますか。

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

これらの状況を処理するための慣習的な方法は何ですか?

答えて

5

あなたはdeferに関数呼び出しを渡すことができ、これは文字通りの関数とすることができる:あなたは通常、右のリソース割り当て後defer文を書き込むことによって、この問題を回避

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

注意。

+0

デニス・セグレットありがとう –

関連する問題