[Go] switchでのerr処理
switchに渡す値を、関数の戻り値にした際に、以下のように書いていました。
//switchの判定に使う値を取得
v, err := getValue()
if err != nil {
return
}
switch v {
case 1:
//1の場合の処理
log.Printf("proc of case 1")
case 2:
//1の場合の処理
log.Printf("proc of case 2")
default:
}
まずエラーチェックをしてから、switchの分岐に入ります。エラーの場合に、はやめに処理を抜けてしまうのは、エラーについて考える必要がなくなっていいような気がします。が、switch文は複数の戻り値を受けて、以下のようにも書けます。
//複数の戻り値を使うswitch
switch v, err := getValue(); {
case err != nil:
log.Printf("somothing wrong. %v", err)
case v == 1:
//1の場合の処理
log.Printf("proc of case 1")
case v == 2:
//1の場合の処理
log.Printf("proc of case 2")
default:
}
分岐をswitchの中に限定で来て、シンプルになるような。なってないような。
どちらかといえば、エラーに限らず複数の戻り値を相手にswitchする場合の使い方でしょうか。
この記事が気に入ったらサポートをしてみませんか?