Heim > Backend-Entwicklung > Golang > Wie sortiere ich ein Segment von Strukturen nach mehreren Feldern in Go?

Wie sortiere ich ein Segment von Strukturen nach mehreren Feldern in Go?

Mary-Kate Olsen
Freigeben: 2024-10-29 20:07:30
Original
541 Leute haben es durchsucht

How to Sort a Slice of Structs by Multiple Fields in Go?

Slice-Objekte nach mehreren Feldern sortieren

Sortieren nach mehreren Kriterien

Berücksichtigen Sie die folgenden übergeordneten und untergeordneten Strukturen:

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}
Nach dem Login kopieren

Angenommen, wir haben ein Segment von übergeordneten Strukturen mit vordefinierten Werten:

parents := []Parent{
    {
        "3",
        []Child{
            {"2"},
            {"3"},
            {"1"},
        },
    },
    {
        "1",
        []Child{
            {"8"},
            {"9"},
            {"7"},
        },
    },
    {
        "2",
        []Child{
            {"5"},
            {"6"},
            {"4"},
        },
    },
}
Nach dem Login kopieren

Sortieranforderungen:

Unser Ziel ist es, das übergeordnete Segment anhand von zwei Kriterien zu sortieren:

  1. Sortieren Sie übergeordnete Strukturen in aufsteigender Reihenfolge ihres ID-Felds.
  2. Sortieren Sie innerhalb jeder übergeordneten Struktur die untergeordneten Slices in aufsteigender Reihenfolge ihres ID-Felds.

Lösung:

Um diese Sortierung zu erreichen, verwenden wir die Funktion sort.Slice, die eine flexible Möglichkeit bietet, Slices basierend auf benutzerdefinierten Vergleichsfunktionen zu sortieren. Hier ist der Code:

<code class="go">// Sort parents by their ID
sort.Slice(parents, func(i, j int) bool { return parents[i].id < parents[j].id })

// Iterate over each parent and sort their children by ID
for _, parent := range parents {
    sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id < parent.children[j].id })
}</code>
Nach dem Login kopieren

Dieser Sortieralgorithmus verarbeitet beide Kriterien effizient und stellt sicher, dass das übergeordnete Segment wie gewünscht geordnet wird.

Erwartetes Ergebnis:

Der sortierte Slice sollte der folgenden Struktur ähneln:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein Segment von Strukturen nach mehreren Feldern 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