Golang errcheck による defer 警告対応
概要
このようなコードを書いていると errcheck
を実行した場合、 defer f.Close()
と指摘されてしまいます。
1 | func hoge() error { |
f.Close()
は返り値が error
であり、その error
の返り値をチェックしていない、という警告です。
対応
その為、以下のように修正することで回避
1 | func hoge() error { |
但し、上記の場合だと error
発生した時に panic
が発生します。
log.Println
すると error
がログ出力こそされますが、その error
によって後続の処理をハンドリングすることができません。
その為、さらに以下の様に修正してみました。
1 | func hoge() (err error) { |
以下対応手順で f.Close()
の error
を hoge()
の戻り値として返すことができます。
hoge()
関数の戻り値でerr error
と変数名を指定するdefer
しているfunc(){}
内でf.Close()
の戻り値error
をerr
に格納する
参考
随分前に既に掲題について話をしていた
Golang errcheck による defer 警告対応
https://kenzo0107.github.io/2019/12/08/2019-12-09-golang-errcheck-defer/