ホームページ > バックエンド開発 > Golang > Go ジェネリックの「比較可能な」制約は、1.20 より前のバージョンのマップ キーに対して弱めることができますか?

Go ジェネリックの「比較可能な」制約は、1.20 より前のバージョンのマップ キーに対して弱めることができますか?

Susan Sarandon
リリース: 2024-12-17 02:51:25
オリジナル
655 人が閲覧しました

Can Go Generics' `comparable` Constraint Be Weakened for Map Keys in Pre-1.20 Versions?

Go ジェネリック: マップ キーの型制約

問題:

汎用的に定義されたリンク リストをGo 1.18 でマップ キーを使用すると、リンク リストが同等のインターフェイスを実装していないことを示すエラー メッセージが表示されます。この目的に適した、より弱い代替制約はありますか?

答え:

Go 1.20 (2023 年 2 月)

比較可能な制約は、マップ キーに対する適切なキャッチオール制約です。 Go 1.20 では、仕様比較可能な型と比較可能な型の間の不一致が解決され、コードを正常にコンパイルできるようになりました。

Go 1.18 および 1.19

Go の比較可能な制約1.18 と 1.19 は、実行時パニックを発生させずに == と != をサポートする厳密に比較可能な型向けに設計されています。これには、等価演算子をサポートするインターフェイスも含まれます。インターフェイスには無限の型セットがあるため、比較可能なものとしてインスタンス化できません。

これに対処するには、次のような比較可能なものを埋め込むカスタム制約の使用を検討してください。

type List interface {
    comparable
    isList() bool
}
ログイン後にコピー

この制約を構造的に実装するリンクされたリストをマップキーとして使用できるようになります。

以上がGo ジェネリックの「比較可能な」制約は、1.20 より前のバージョンのマップ キーに対して弱めることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート