Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiert man ein Struktursegment mit verschachtelten Slices in Go basierend auf mehreren Kriterien?

Wie sortiert man ein Struktursegment mit verschachtelten Slices in Go basierend auf mehreren Kriterien?

DDD
DDDOriginal
2024-10-28 21:10:03939Durchsuche

How do you sort a slice of structs with nested slices in Go based on multiple criteria?

Sortieren eines Segments von Strukturen mit verschachtelten Slices

In Go können Sie Segmente benutzerdefinierter Strukturen mithilfe des integrierten Sortierpakets sortieren. Betrachten Sie den folgenden Code, der zwei Strukturen definiert, „Parent“ und „Child“, die eine Eltern-Kind-Beziehung darstellen:

<code class="go">type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}</code>

Angenommen, Sie haben einen Teil der Parent-Strukturen und möchten diese nach zwei Kriterien sortieren:

Sortierkriterien:

  1. Sortieren Sie das übergeordnete Segment nach Parent.id in aufsteigender Reihenfolge.
  2. Sortieren Sie für jedes übergeordnete Element das untergeordnete Segment nach untergeordnetem Element. id in aufsteigender Reihenfolge innerhalb des übergeordneten Elements.

Lösung:

Das bereitgestellte Code-Snippet adressiert die Sortieranforderung:

``
// Sortieren Sie jedes Elternteil im Eltern-Slice nach ID
sort.Slice(parents, func(i, j int) bool {

return parents[i].id < parents[j].id })

// Sortieren Sie für jedes Elternteil jedes Kind im Kinder schneiden nach ID
for _, parent := range parent {

sort.Slice(parent.children, func(i, j int) bool { 
    return parent.children[i].id < parent.children[j].id })

}
``

Die sort.Slice-Funktion arbeitet direkt mit Slices, was die Notwendigkeit überflüssig macht für Zwischenbehälter.

  1. Es sortiert den Eltern-Slice basierend auf Parent.id.
  2. Für jedes Eltern-Slice im sortierten Eltern-Slice wird das Kinder-Slice basierend auf Child.id sortiert eine verschachtelte Schleife.

Das Ergebnis stimmt mit der erwarteten Ausgabe überein:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]

Das obige ist der detaillierte Inhalt vonWie sortiert man ein Struktursegment mit verschachtelten Slices in Go basierend auf mehreren Kriterien?. 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