Eindeutige Elemente in Go-Slices oder Arrays identifizieren
In Go kann es eine Herausforderung sein, eine eindeutige Liste von Elementen aus einem Slice oder Array zu erhalten , insbesondere für strukturierte Datentypen. So können Sie diese Aufgabe erledigen:
Im bereitgestellten Codebeispiel gibt es mehrere Probleme:
-
Vergleich aller Elemente:Es vergleicht jedes Element im Das besuchte Slice wird auf jedes Element im Unique-Slice angewendet, wodurch möglicherweise Duplikate zu Unique hinzugefügt werden.
-
Verwendung von „reflect.DeepEqual“: Dies ist unnötig, da Go-Strukturen mit vergleichbaren Feldern von Natur aus die Wertegleichheit mit dem = unterstützen = Operator.
Alternative Strategien:
-
Verwenden eines Sets: Obwohl Go kein integriertes hat Um die Datenstruktur festzulegen, können Sie eine mithilfe einer Karte mit einem booleschen Wert erstellen. Jedes Element wird zu einem Schlüssel und die Karte fungiert als einzigartiger Speicher. Um die eindeutigen Elemente später als Slice abzurufen, iterieren Sie über die Kartenschlüssel.
-
Explizite Prüfung auf Eindeutigkeit: Iterieren Sie über den besuchten Slice und prüfen Sie, ob das aktuelle Element im eindeutigen Slice vorhanden ist. Wenn ja, überspringen Sie es. Andernfalls fügen Sie es zu „unique“ hinzu.
-
Verwenden einer benutzerdefinierten Datenstruktur: Erstellen Sie eine benutzerdefinierte Datenstruktur, die einen Satz implementiert. Dies kann eine effizientere Lösung als die Verwendung einer Karte sein, wenn Sie häufige Eindeutigkeitsprüfungen durchführen müssen.
Hinweis: Strukturtypen in Go sind vergleichbar, wenn alle ihre Felder vergleichbar sind. Dazu gehören primitive Typen wie Ints und Floats.
Das obige ist der detaillierte Inhalt vonWie kann man eindeutige Elemente in Go-Slices und Arrays effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn