← Go コース
41. 型switch — 型ごとに分岐する
調べたい型が複数あるときは、型 switch を使うと型アサーションを並べるより簡潔に書けます。switch v := i.(type) という特別な構文で、i の動的型に応じて case を分岐させます。各 case の中では、変数 v はその case の型として扱えるので、そのまま型固有の処理を書けます。
case には複数の型をカンマで並べることもでき、その場合 v は元のインターフェース型のままになります。どの case にも当てはまらないときは default が実行されます。i.(type) という書き方は switch の中だけで使える特別な形で、通常の式としては使えない点を覚えておきましょう。
型 switch は、any で受け取った値を実際の型に応じて処理し分けるときの定番です。JSON のデコード結果や、さまざまな型を受け取る汎用関数の内部などでよく登場します。とはいえ型 switch が増えすぎたら、インターフェースのメソッドで多態的に表現できないか見直すと、より Go らしい設計になります。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Go