【GO】interface{}を引数にした汎用関数を作る


汎用的な関数を作りたいときにinterface{}型を引数にしてswitchで処理を書くことがあります。

忘れないうちに要点メモ。switchの以下の要素を使います。

  • Type switch:インターフェースの型分岐
  • Multiple cases:複数ケースの処理

 

golangのswitchは基本breakはいりません(case内のif内で中断などは可能)。

該当ケースがあればその中の処理だけをするので、逆に該当以下の処理を全部やらせたい場合にはfallthroughキーワードを使います。

この辺の動作は公式wikiが一番わかりやすかったです。

 

適当なケース分けをしてみます。

 

interface.(type)を一時変数にしてcase内で実値として使えます。

このときMultiple casesだと値にかかわる操作をできません。

エラー:invalid operation: v + 1 (mismatched types interface {} and int)

単体caseであれば型に沿った操作が可能です。

 

gormを使ったDB操作を1つにまとめるなんてことも可能です。

こんな横着を見たことはないですが。

 

何かしら汎用メソッドを作るときに役立ちそうなので覚えておきます。


コメントを残す

メールアドレスが公開されることはありません。