はじめに どうもナレッジワークのtenntennです。 Goには、1.18でジェネリクス(型パラメータ)が導入されました。ジェネリクスの導入と共に、インタフェースを型パラメタに対する型制約として利用し、新しく型セットという概念が入りました。 型制約はインタフェースとして宣言可能ですが、『比較可能な型』のような制約のもつ型セットが無限集合になる、かつ現時点でのインタフェースでの表現では難しい制約を組み込みで提供することで解決しています。 たとえば、『比較可能な型』を表現する制約としてcomparableが導入されました。ここでは、Go1.18で提供されたcomparableについてと、それがGo1.20でどう変わるのかを解説します。 なお、本記事で扱う内容は、Go1.20でリリースとしていますが、今後の変更によっては変わる可能性があります。しかし、すでに変更はRC1版としてリリースされている