Eindeutige Zeichenfolgen in einem Array verwalten
Mit dem bereitgestellten Code möchten Sie ein Array eindeutiger Zeichenfolgen erstellen. Go-Arrays erfordern jedoch eindeutige Elemente, was es schwierig macht, die Eindeutigkeit mit dynamisch hinzugefügten Zeichenfolgen durchzusetzen. Dies wirft die Frage auf, wie eine Datenstruktur erstellt werden kann, die eindeutige Zeichenfolgenwerte ermöglicht.
Karten als Mengen verwenden
Da Go keinen nativen Mengendatentyp hat, a Die Karte kann für diesen Zweck effektiv genutzt werden. Die Eindeutigkeit des Kartenschlüssels bildet die Grundlage für unsere einzigartige Zeichenfolgensammlung.
Option 1: Karte mit booleschen Werten
Eine nicht leere Karte (true) kann eine Menge von darstellen einzigartige Saiten. Zum Beispiel:
m := make(map[string]bool) m["aaa"] = true m["bbb"] = true m["bbb"] = true // Ignored as "bbb" already exists m["ccc"] = true
Dieser Ansatz bietet eine lesbare und intuitive Darstellung einer Menge.
Option 2: Karte mit Strukturwerten
Für Bei minimaler Speichernutzung kann eine Karte mit dem Werttyp struct{} verwendet werden. Da Strukturen keinen Speicher belegen, reduziert diese Option den Speicheraufwand erheblich.
m := make(map[string]struct{}) m["aaa"] = struct{}{} m["bbb"] = struct{}{} m["bbb"] = struct{}{} // Ignored as "bbb" already exists m["ccc"] = struct{}{}
So überprüfen Sie die Existenz
Um festzustellen, ob ein Element in der Menge vorhanden ist, Sie können den Nullwert von bool oder das Komma-OK-Idiom mit dem Strukturansatz nutzen:
Option 1:
exists := m["somevalue"] // If "somevalue" is in the map, exists is true; otherwise, false
Option 2:
_, exists := m["somevalue"] // exists is true if "somevalue" is in the map; false otherwise
Reihenfolge beibehalten
Bei Beibehaltung der Einfügungsreihenfolge Wenn dies von größter Bedeutung ist, sollten Sie die Verwendung einer Kombination aus einem Slice zur Wahrung der Ordnung und einer Karte zur Eindeutigkeitsvalidierung in Betracht ziehen. Eine beispielhafte Hilfsfunktion:
func add(s string) { if m[s] { return // Already in the map } a = append(a, s) m[s] = true }
Mit diesem Ansatz können Sie einen geordneten Satz eindeutiger Zeichenfolgen erstellen.
Das obige ist der detaillierte Inhalt vonWie verwaltet man effizient ein Array eindeutiger Zeichenfolgen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!