Arrays von Strukturen nach benutzerdefinierten Feldnamen in Go sortieren
In Go kann das Sortieren eines Arrays von Strukturen nach einem bestimmten Feld komplex sein Aufgabe, insbesondere wenn Sie einen benutzerdefinierten Schlüssel benötigen. Mit der Einführung von sort.Slice in Go 1.8 ist dieser Prozess jedoch erheblich einfacher geworden.
Stellen Sie sich ein Array von Planet-Strukturen vor, die jeweils Eigenschaften wie Name, Aphel, Perihel, Achse und Radius enthalten. Um diese Planeten nach ihren Achsenwerten zu sortieren, können Sie die Funktion sort.Slice verwenden:
package main import ( "log" "sort" ) type Planet struct { Name string Aphelion float64 Perihelion float64 Axis int64 Radius float64 } func main() { mars := &Planet{ Name: "Mars", Aphelion: 249.2, Perihelion: 206.7, Axis: 227939100, Radius: 3389.5, } earth := &Planet{ Name: "Earth", Aphelion: 151.930, Perihelion: 147.095, Axis: 149598261, Radius: 6371.0, } venus := &Planet{ Name: "Venus", Aphelion: 108.939, Perihelion: 107.477, Axis: 108208000, Radius: 6051.8, } planets := [...]Planet{*mars, *venus, *earth} log.Println("Original order:", planets) sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis }) log.Println("Order after sorting by axis:", planets) }
In diesem Beispiel verwendet die Funktion sort.Slice einen Ausschnitt des Planeten-Arrays und eine Vergleichsfunktion als Argumente . Die Vergleichsfunktion bestimmt die Sortierreihenfolge. In diesem Fall prüft die Vergleichsfunktion, ob der Achsenwert des i-ten Elements kleiner als der des j-ten Elements ist.
Der Sortiervorgang ändert das Planetenarray an Ort und Stelle, sodass keine Notwendigkeit besteht um das sortierte Ergebnis einer neuen Variablen zuzuweisen.
Es ist wichtig zu beachten, dass sort.Slice das ursprüngliche Array ändert. Wenn Sie ein neues sortiertes Slice benötigen, können Sie vor dem Sortieren explizit eine Kopie des ursprünglichen Slice erstellen.
Das obige ist der detaillierte Inhalt vonWie sortiere ich Go-Strukturen nach benutzerdefinierten Feldern mit „sort.Slice'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!