枯れた技術の水平思考

世の中わからないことだらけだ.少し確かなことは検証をしたことだけ

Golang using variable before checking for errorsの対応

govet に using variable before checking for errorsと怒られたときの対応方法.

なにを指摘されているのか?

defer variable.Close()

とあったき Close() メソッドがエラーを返す可能性がある場合にエラーチェックしろと言われている.

対応方法

defer の中に無名関数でチェックを入れる

defer func() {
    err = variable.Close()  // ちなみにエラーチェックの条件分岐は一行で書ける
    if err != nil {
        log.Fatal(err) // この例ではFatalで落としているが適切な処理を
    }
}()