Go スライスまたは配列内の固有の要素の識別
Go では、スライスまたは配列から要素の一意のリストを取得するのが困難な場合があります特に構造化データ型の場合。このタスクを実行する方法は次のとおりです:
提供されたコード例には、いくつかの問題があります:
-
すべての要素の比較:
-
Using Reflect.DeepEqual: 比較可能なフィールドを持つ Go 構造体は本質的に = を使用した値の等価性をサポートしているため、これは不要です。 = 演算子。
代替戦略:
-
セットの使用: Go には組み込み関数がありませんが、データ構造を設定するには、ブール値のマップを使用してデータ構造を作成できます。各要素がキーとなり、マップは一意のストアとして機能します。後で一意の要素をスライスとして取得するには、マップ キーを反復処理します。
-
一意性の明示的なチェック: 訪問したスライスを反復処理し、現在の要素が一意のスライスに存在するかどうかを確認します。存在する場合はスキップしてください。それ以外の場合は、それを unique に追加します。
-
カスタム データ構造の使用: セットを実装するカスタム データ構造を作成します。これは、頻繁に一意性チェックを実行する必要がある場合、マップを使用するよりも効率的なソリューションを提供します。
注: すべてのフィールドが比較可能な場合、Go の構造体型は比較可能です。これには、int や float などのプリミティブ型が含まれます。
以上がGo のスライスと配列で固有の要素を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。