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 besuchte Slice zu jedem Element im Unique-Slice, wodurch möglicherweise Duplikate zu Unique hinzugefügt werden.
-
Verwenden reflektieren.DeepEqual: Dies ist unnötig, da Go-Strukturen mit vergleichbaren Feldern von Natur aus die Wertgleichheit mithilfe des ==-Operators unterstützen.
Alternative Strategien:
-
Verwenden eines Sets: Obwohl Go keine integrierte Set-Datenstruktur hat, können Sie kann 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!