Heim >Backend-Entwicklung >Golang >Wie kann eine geordnete Ausgabe beim Durchlaufen von Go-Maps gewährleistet werden?

Wie kann eine geordnete Ausgabe beim Durchlaufen von Go-Maps gewährleistet werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-28 01:16:15618Durchsuche

How to Guarantee Ordered Output When Iterating Over Go Maps?

Karten in Go: Ordnung beibehalten und auf Elemente zugreifen

In Go bieten Karten eine dynamische und effiziente Möglichkeit, Schlüssel-Wert-Paare zu speichern. Im Gegensatz zu Arrays oder Slices sind Karten jedoch nicht von Natur aus sortiert. Dies kann dazu führen, dass die Ausgabe beim Durchlaufen nicht in der richtigen Reihenfolge erscheint.

Der folgende Codeausschnitt veranschaulicht dieses Verhalten:

package main

import (
    "fmt"
)

type monthsType struct {
    no   int
    text string
}

var months = map[int]string{
    1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June",
    7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December",
}

func main(){
    for no, month := range months {
        fmt.Print(no)
        fmt.Println("-" + month)
    }
}

Wenn Sie diesen Code ausführen, werden Sie feststellen, dass die Karte wird nicht in der Reihenfolge der Tasten (Nummern 1 bis 12) gedruckt. Stattdessen wird in einer scheinbar zufälligen Reihenfolge gedruckt.

Lösung: Reihenfolge in Karten steuern

Um eine Karte in einer bestimmten Reihenfolge zu drucken, stehen Ihnen mehrere Optionen zur Verfügung kann berücksichtigen:

1. Verwenden Sie ein Array:
Wenn die Reihenfolge entscheidend ist, können Sie ein Array verwenden, um Elemente nacheinander zu speichern. Arrays bieten eine geordnete Datenstruktur, in der Sie über ihren Index direkt auf Elemente zugreifen können.

2. Schlüssel sortieren:
Wenn Sie die Karte als Datenstruktur beibehalten müssen, können Sie mit der Funktion sort.Ints eine sortierte Liste von Schlüsseln abrufen, über die sortierten Schlüssel iterieren und die entsprechenden Werte aus der Karte abrufen .

Beispielcode:

package main

import (
    "fmt"
    "sort"
)

type monthsType struct {
    no   int
    text string
}

var months = map[int]string{
    1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June",
    7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December",
}

func main(){
    var sortedKeys []int
    for key := range months {
        sortedKeys = append(sortedKeys, key)
    }
    sort.Ints(sortedKeys)

    fmt.Println("Printing in order:")
    for _, key := range sortedKeys {
        fmt.Printf("%d-%s", key, months[key])
    }
}

In diesem Code wird das sortedKeys-Array erstellt um die Schlüssel der Karte in aufsteigender Reihenfolge zu speichern. Anschließend iterieren wir über die sortierten Schlüssel und greifen auf die entsprechenden Werte aus der Karte zu. Dies erzeugt die folgende Ausgabe:

Printing in order:
1-January2-Fabruary3-March4-April5-May6-June7-July8-August9-September10-October11-Novenber12-December

Das obige ist der detaillierte Inhalt vonWie kann eine geordnete Ausgabe beim Durchlaufen von Go-Maps gewährleistet werden?. 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