Heim > Backend-Entwicklung > Golang > Wie kann ich ein Go-Array von Strukturen effizient nach einem benutzerdefinierten Feldnamen sortieren?

Wie kann ich ein Go-Array von Strukturen effizient nach einem benutzerdefinierten Feldnamen sortieren?

Linda Hamilton
Freigeben: 2024-12-21 18:10:10
Original
240 Leute haben es durchsucht

How Can I Efficiently Sort a Go Array of Structs by a Custom Field Name?

Effiziente Array-Sortierung nach benutzerdefinierten Feldnamen

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.

Problemstellung

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}}
}
Nach dem Login kopieren

Wie können wir sortieren? die Planetenanordnung nach dem Achsenfeld?

Lösung

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
})
Nach dem Login kopieren

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.

Fazit

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage