次のようないくつかの便利なメソッドを含む一般的な list
型を作成するとします。
ただし、リスト t
の要素タイプをさらに制限する必要がある便利な方法は他にもあります。たとえば、この list
型には contains
メソッドを実装できません:
list
を宣言した場合のみ、contains
しかし、これにより、比較できない型の list
を作成することができなくなります。
両方の長所を活かす方法はありますか?つまり、比較不可能な型 t
に使用可能な list[t]
がありますが、t
が比較可能な ## 場合、 contains を持つことが許可されます。 # 方法?
/
list または
list/
comparablelist)
を含めるようにします
この問題を解決する合理的な方法は、明示的なコンパレータを渡すことだと思います。
リーリー
そうすれば、次のことができますリーリー
同様のタイプの場合、デフォルト値を指定できます:リーリー
したがって、上記はになります リーリー
コンパレータをlist 型に埋め込んでデフォルト値
func(a, b t) bool { return false } を割り当てて、定義できるコンパレータを公開することもできます。コンパレーターが渡されるコンストラクター。しかし、これはあなたにとってわかりにくいかもしれません。
以上がGolang で型パラメータをさらに制約する (Contains メソッドを使用して汎用 List を実装する)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。