Heim > Backend-Entwicklung > Golang > Wie verwaltet man effizient ein Array eindeutiger Zeichenfolgen in Go?

Wie verwaltet man effizient ein Array eindeutiger Zeichenfolgen in Go?

Mary-Kate Olsen
Freigeben: 2024-12-19 06:41:20
Original
255 Leute haben es durchsucht

How to Efficiently Maintain an Array of Unique Strings in Go?

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
Nach dem Login kopieren

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{}{}
Nach dem Login kopieren

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
Nach dem Login kopieren

Option 2:

_, exists := m["somevalue"]  // exists is true if "somevalue" is in the map; false otherwise
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage