Dev Study
Go コース

56. 制約 — comparable と constraints

型パラメータには「どんな操作が許されるか」を表す制約(constraint)を指定します。any は何でも許す代わりに == や + などは使えません。比較(== / !=)が必要なら、組み込みの制約 comparable を使います。マップのキー型や、要素の一致を調べる関数で重宝します。

数値に対する < や + のような演算子を使いたい場合は、許す型の集合を並べたインターフェースを制約として定義します。代表的なものは準標準の golang.org/x/exp/constraints パッケージにまとまっており、Ordered(順序比較できる型)などが用意されています。自分でも `interface { int | float64 }` のように書けます。

下の例は comparable を制約に使い、スライスに目的の値が含まれるかを判定する Contains を定義します。int でも string でも == で比較できるので動きます。

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

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