[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する場合の使い方でしょうか。

この記事が気に入ったらサポートをしてみませんか?