interface{}型で宣言された変数の値の具体的な型により処理を分岐させたい、というケースが考えられる。Type Switch という仕組みでそれを実現できる。switch - case 文を使って、型ごとの処理内容を case 内に記述する。 公式ドキュメントの Effective Go にもきちんと記載されているのだが、初めて見たとき少し戸惑うので一応メモ。 例えば、ある値に「かけ算」をする以下のような関数を作るとする。 数値(int)が渡された場合は、その数に指定された数を掛けた結果を返す。 文字列(string)が渡された場合は、それを指定された回数だけ繰り返す。 ソースはこんな感じになる。(簡略化するため int, string 以外では nil を返すものとする) package main import ( "fmt" "strings" ) func multiple(v