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/