Das Sortieren von Datenstrukturen ist eine grundlegende Aufgabe in der Programmierung, und Go bietet verschiedene Ansätze, um damit umzugehen. Insbesondere Arrays von Strukturen stellen beim Sortieren nach beliebigen Feldnamen eine Herausforderung dar.
Bedenken Sie den folgenden Go-Code:
type Planet struct { Name string `json:"name"` Aphelion float64 `json:"aphelion"` // in million km Perihelion float64 `json:"perihelion"` // in million km Axis int64 `json:"Axis"` // in km Radius float64 `json:"radius"` } func main() { planets := [...]Planet{{"Mars", 249.2, 206.7, 227939100, 3389.5}, {"Venus", 108.939, 107.477, 108208000, 6051.8}, {"Earth", 151.930, 147.095, 149598261, 6371.0}} }
Wie können wir sortieren? die Planetenanordnung nach dem Achsenfeld?
In neueren Versionen von Go ist die Die Funktion sort.Slice bietet eine effiziente Möglichkeit, Slices basierend auf einer benutzerdefinierten Vergleichsfunktion zu sortieren.
sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis })
Hier sind i und j Indizes von Elementen im Slice, und die Vergleichsfunktion gibt true zurück, wenn das Element bei ist Index i sollte vor dem Element bei Index j stehen. In diesem Fall vergleichen wir die Achsenfelder der Planeten.
Beachten Sie, dass bei der Verwendung von Arrays (im Gegensatz zu Slices) der Slice-Overlay-Operator [:] erforderlich ist, um das Array in ein Slice umzuwandeln.
Durch die Nutzung von sort.Slice erreichen wir eine einfache und effiziente Sortierung von Arrays von Strukturen basierend auf beliebigen Feldnamen. Dies bietet eine Python-ähnliche Erfahrung zum Sortieren komplexer Datenstrukturen in Go.
Das obige ist der detaillierte Inhalt vonWie kann ich ein Go-Array von Strukturen effizient nach einem benutzerdefinierten Feldnamen sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!