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:
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!