問題: 型をマップ キーとして使用しようとすると、コンパイル時エラーが発生します。プライベートメンバーを含む型。この問題はどのように解決できますか?
答え:
型がマップ キーとして使用されるのを防ぐことは本質的に有益ではないかもしれませんが、特定の状況があります。そのようなアクションが必要になるためです。言語仕様に従って、マップ キーは特定の比較規則に従う必要があります。型がマップ キーとして使用されるのを防ぐ 2 つの方法を次に示します。
方法 1: 比較不可能なフィールドを埋め込む
最も簡単な解決策は、フィールドを埋め込むことです。スライス、マップ、関数など、型が比較できない型内。これはマップ キーの比較演算子の要件に違反し、型が不適切になります。例:
<code class="go">type MyType struct { S string i int notComparable []int }</code>
方法 2: ラッパー型を使用する
代わりに、元の型を埋め込み、比較不可能な型を追加するラッパー型を作成することもできます。分野。このラッパー型は、元の型との比較可能性を維持しながら、他の場所でも使用できます。例:
<code class="go">type myType struct { S string i int } type MyType struct { myType notComparable []int }</code>
注:
マップ キーとして型の使用を防止することによる潜在的な影響を考慮することが重要です。 Embedd Non-Comparable Field メソッドの場合、比較不可能なフィールドが導入され、型に関係する比較演算に波及効果が生じる可能性があります。
以上がGo で型がマップ キーとして使用されないようにする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。