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
Mary-Kate OlsenOriginal
2024-10-29 20:07:30547Durchsuche

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
}

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"},
        },
    },
}

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>

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}]}]

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!

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