問題:
汎用的に定義されたリンク リストを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 サイトの他の関連記事を参照してください。