Dev Study
Go コース

57. ジェネリックな関数 — Map と Filter

ジェネリクスは、コレクションを変換・絞り込みする汎用関数と相性が抜群です。入力の要素型 T と出力の要素型 U を別の型パラメータにすれば、Map のように「型を変える変換」も書けます。func Map[T, U any](s []T, f func(T) U) []U が典型です。

Filter は条件を満たす要素だけを残す関数で、要素型は変わらないので型パラメータは1つで足ります。これらは関数を引数に取るため、呼び出し側はラムダ(無名関数)で処理を渡します。型パラメータ U は推論されにくいことがあるので、必要なら Map[int, string](...) と明示します。

下の例では int のスライスを Filter で偶数だけにし、Map で文字列に変換します。元の順序を保つので出力は安定します。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Go
公式ドキュメントで詳しく ↗