Heim >Backend-Entwicklung >Golang >Verwendung von Map Golang

Verwendung von Map Golang

王林
王林Original
2023-05-10 19:46:05670Durchsuche

Golang ist eine sehr leistungsfähige Programmiersprache mit hoher Effizienz und einfacher und leicht zu erlernender Syntax. Einer der Hauptgründe für die Vorteile von Go sind die integrierten Datenstrukturen wie Karten. In diesem Artikel werfen wir einen tieferen Blick auf die Verwendung von Go-Karten.

Go Map ist eine ungeordnete Sammlung von Schlüssel-Wert-Paaren, was bedeutet, dass Sie jede Art von Wert als Schlüssel und Wert verwenden können. Die Schlüssel-Wert-Paare innerhalb der Karte werden nicht in einer bestimmten Reihenfolge gespeichert, sondern in der Reihenfolge ihrer Hashwerte. Wir werden diese Funktion weiter unten besprechen.

Eine Karte erstellen

Um eine Karte in Go zu erstellen, müssen Sie die integrierte Funktion make() verwenden. Sehen wir uns an, wie man eine Karte erstellt und ihr Schlüssel-Wert-Paare hinzufügt.

m := make(map[string]int) // 创建一个字符串为键,int 类型为值的 map
m["foo"] = 42             // 向 map 中添加键为 "foo" 的值为 42
fmt.Println(m["foo"])     // 输出 map 中键为 "foo" 的值,输出 42

In diesem Beispiel erstellen wir eine Map mit String-Schlüsseln und Int-Werten und fügen dann den Wert 42 mit dem Schlüssel „foo“ hinzu. Die letzte Codezeile gibt den Wert in der Map mit dem Schlüssel „foo“ aus, sodass wir als Ausgabe 42 erhalten.

Es gibt auch eine alternative Möglichkeit, den Anfangswert beim Erstellen der Karte anzugeben. Sie können es wie folgt versuchen:

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

In diesem Beispiel haben wir eine Map mit zwei Schlüssel-Wert-Paaren erstellt, wobei der Schlüssel „foo“ einen Wert von 42 und der Schlüssel „bar“ einen Wert von 24 hat.

Auf den Wert in einer Map zugreifen

Um auf den Wert einer Map in Go zuzugreifen, können Sie die folgende Methode verwenden:

val, ok := m["foo"]
fmt.Println(val, ok)     // 输出 42, true

Hier speichert die Variable val den Wert des Schlüssels „foo“ in der Map und das ok Die Variable gibt an, ob der Schlüssel in der Map vorhanden ist. Ein Eintrag für „foo“.

Wenn es keinen solchen Eintrag in der Karte gibt (d. h. „foo“ ist kein Schlüssel), dann ist die ok-Variable falsch. Wenn Sie also überprüfen möchten, ob auf den Wert in der Karte erfolgreich zugegriffen wurde, können Sie den Wert der Variablen ok überprüfen.

Das Iterieren über Werte in einer Karte

Das Iterieren über Werte in einer Karte ist in Go einfach, Sie können eine For-Range-Schleife verwenden.

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

for k, v := range m {
    fmt.Printf("key: %s, value: %d
", k, v)
}

// 输出:
// key: foo, value: 42
// key: bar, value: 24

In diesem Beispiel verwenden wir eine for-range-Schleife, um die Schlüssel und Werte in Karte m zu durchlaufen und sie in jeder Iteration auszugeben. Beachten Sie, dass die Syntax der for-Schleife nicht nur die Schlüssel der Karte, sondern auch die Werte in der Karte iteriert.

Werte in der Karte löschen

Das Löschen von Werten in der Go-Karte ist ebenfalls sehr einfach, Sie müssen nur die Funktion delete() verwenden.

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

delete(m, "foo") // 删除 map 中键为 "foo" 的键值对

In diesem Beispiel verwenden wir die Funktion delete(), um das Schlüssel-Wert-Paar mit dem Schlüssel „foo“ in der Map zu löschen. Nach dem Löschen enthält die Karte keinen Eintrag mehr mit dem Schlüssel „foo“.

Kartengröße und -kapazität

In Go verfügt die Karte über Größen- und Kapazitätseigenschaften. Im Gegensatz zu Datenstrukturen in anderen Sprachen verfügen Karten in Go jedoch nicht über ein explizites Kapazitätsattribut. Wenn Sie also die Größe der Karte wissen möchten, müssen Sie die integrierte Funktion len() wie unten gezeigt verwenden:

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

fmt.Println(len(m)) // 输出长度为 2

Hier verwenden wir die Funktion len(), um die Länge der Karte m auszugeben, und ihre Ausgabe ist 2.

Empfehlungen zur Kartenleistung und -nutzung

Karte ist eine sehr leistungsstarke Datenstruktur, die jedoch mit Vorsicht verwendet werden muss. Da es sich bei Map um eine dynamische Hash-Tabelle handelt, halten viele Entwickler sie für schneller als andere Datenstrukturen. Im realen Einsatz kann die Kartenleistung jedoch durch Speicherverwaltung und Hash-Konflikte beeinträchtigt werden, was zu langsamerem Code führt.

Hier sind einige Vorschläge für die Verwendung von Go-Maps:

  • Vermeiden Sie das Hinzufügen zu vieler Schlüssel-Wert-Paare in der Karte. Zu viele Schlüssel-Wert-Paare können zu mehr Hash-Kollisionen führen.
  • Für Situationen, in denen große Karten verarbeitet werden müssen, wird empfohlen, den parallelitätssicheren Typ sync.Map zu verwenden.
  • Wenn Sie die Leistung berücksichtigen, sollten Sie die Verwendung von Arrays, Slices oder anderen Datenstrukturen in Betracht ziehen.

Trotzdem ist die Karte eine sehr praktische und flexible Datenstruktur. Wenn Sie es sinnvoll nutzen, ist es ideal für Ihren Go-Code.

Zusammenfassung

In diesem Artikel haben wir etwas über die Verwendung von Karten in Golang gelernt. Wir haben gelernt, wie man Einträge in einer Karte erstellt, darauf zugreift, iteriert und löscht und wie man die Größe und Kapazität einer Karte anzeigt. Gleichzeitig geben wir auch einige Vorschläge zur Verwendung von Karten und hoffen, Ihnen dabei zu helfen, diese Datenstruktur in Go besser zu nutzen.

Das obige ist der detaillierte Inhalt vonVerwendung von Map Golang. 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