Heim > Backend-Entwicklung > Golang > Wie kann ich eine geordnete Iteration über Go Maps garantieren?

Wie kann ich eine geordnete Iteration über Go Maps garantieren?

Susan Sarandon
Freigeben: 2024-11-25 20:09:13
Original
958 Leute haben es durchsucht

How Can I Guarantee Ordered Iteration Over Go Maps?

Karten in Go bewahren die Ordnung – aber nicht so, wie Sie vielleicht denken

In Go sind Karten unsortierte Datenstrukturen. Dies bedeutet, dass die Reihenfolge der Schlüssel-Wert-Paare in einer Karte nicht garantiert konsistent ist. Dies kann ein Problem sein, wenn Sie eine Karte in einer bestimmten Reihenfolge durchlaufen müssen.

Bedenken Sie den folgenden Code:

package main

import (
    "fmt"
)

func main() {
    months := map[int]string{
        1:  "January",
        2:  "February",
        3:  "March",
        4:  "April",
        5:  "May",
        6:  "June",
        7:  "July",
        8:  "August",
        9:  "September",
        10: "October",
        11: "November",
        12: "December",
    }

    for index, month := range months {
        fmt.Println(index, "-", month)
    }
}
Nach dem Login kopieren

Wenn Sie diesen Code ausführen, können Sie mit der Ausgabe rechnen seien die Monate in der Reihenfolge von Januar bis Dezember. Dies ist jedoch nicht der Fall. Stattdessen werden Sie sehen, dass die Monate in einer scheinbar zufälligen Reihenfolge gedruckt werden.

Warum passiert das?

Der Grund dafür ist, dass die Schlüssel in einer Go-Karte unsortiert gespeichert sind Array. Wenn Sie über eine Karte iterieren, wird auf die Schlüssel in der Reihenfolge zugegriffen, in der sie im Array gespeichert sind.

Lösung

Es gibt verschiedene Möglichkeiten, diese zu erhalten rund um dieses Thema. Eine Möglichkeit besteht darin, ein Array zu verwenden, um die Schlüssel der Reihe nach zu speichern. Sie können dann über das Array iterieren, um in der gewünschten Reihenfolge auf die Elemente der Karte zuzugreifen.

Eine andere Möglichkeit, dieses Problem zu umgehen, ist die Verwendung einer sortierten Karte. Eine sortierte Karte ist eine Karte, die garantiert, dass die Schlüssel in sortierter Reihenfolge gespeichert werden. Dies kann nützlich sein, wenn Sie eine Karte in einer bestimmten Reihenfolge durchlaufen müssen.

Beispiel

Der folgende Code zeigt, wie ein Array zum Speichern der Schlüssel verwendet wird Reihenfolge:

package main

import (
    "fmt"
    "sort"
)

func main() {
    months := map[int]string{
        1:  "January",
        2:  "February",
        3:  "March",
        4:  "April",
        5:  "May",
        6:  "June",
        7:  "July",
        8:  "August",
        9:  "September",
        10: "October",
        11: "November",
        12: "December",
    }

    keys := []int{}
    for key := range months {
        keys = append(keys, key)
    }

    sort.Ints(keys)

    for _, key := range keys {
        fmt.Println(key, "-", months[key])
    }
}
Nach dem Login kopieren

Wenn Sie diesen Code ausführen, werden Sie sehen, dass die Ausgabe die Monate in der Reihenfolge von Januar bis Dezember sind.

Das obige ist der detaillierte Inhalt vonWie kann ich eine geordnete Iteration über Go Maps garantieren?. 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