Arrays in Go sortieren: Eine praktische Anleitung
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
- Das
sort
-Paket bietet integrierte Funktionen zum Sortieren von Slices, aber nicht direkt von Arrays fester Größe. - Arrays müssen in Slices konvertiert werden, bevor sie mit
sort.Ints
,sort.Strings
odersort.Float64s
sortiert werden können. - Benutzerdefiniertes Sortieren kann mithilfe von
sort.Interface
für komplexe Datentypen erreicht werden.
In Go ist das Sortieren von Arrays eine grundlegende Operation, die mit dem sort
-Standardbibliothekspaket durchgeführt werden kann. Dieses Paket bietet Hilfsmittel zum Sortieren von Slices, die aufgrund ihrer Flexibilität im Vergleich zu Arrays in Go häufiger verwendet werden. Da Arrays und Slices in Go jedoch eng miteinander verbunden sind, beinhaltet das Sortieren eines Arrays die Konvertierung in einen Slice, bevor die Sortierfunktionen angewendet werden.
Arrays und Slices in Go verstehen
Ein Array in Go ist eine Sequenz fester Größe von Elementen desselben Typs. Zum Beispiel:
var arr [5]int = [5]int{3, 1, 4, 5, 2}
Ein Slice ist eine dynamisch dimensionierte, flexible Ansicht der Elemente eines Arrays. Slices sind vielseitiger und werden in der Go-Programmierung häufiger verwendet. Ein Slice kann wie folgt deklariert und initialisiert werden:
var s []int = []int{3, 1, 4, 5, 2}
Sortieren eines Slices
Um einen Slice von Integer-Werten zu sortieren, können Sie die Funktion sort.Ints
aus dem sort
-Paket verwenden:
package main import ( "fmt" "sort" ) func main() { s := []int{3, 1, 4, 5, 2} sort.Ints(s) fmt.Println(s) // Output: [1 2 3 4 5] }
Zum Sortieren von Slices anderer Typen, wie z. B. float64
oder string
, bietet Go sort.Float64s
bzw. sort.Strings
.
Sortieren eines Arrays
Da die Funktionen des sort
-Pakets mit Slices arbeiten, müssen Sie ein Array zuerst in einen Slice konvertieren, um es zu sortieren. So geht's:
package main import ( "fmt" "sort" ) func main() { arr := [5]int{3, 1, 4, 5, 2} sort.Ints(arr[:]) fmt.Println(arr) // Output: [1 2 3 4 5] }
In diesem Beispiel erstellt arr[:]
einen Slice, der alle Elemente des Arrays arr
enthält. Die Funktion sort.Ints
sortiert diesen Slice dann direkt, wodurch auch das ursprüngliche Array geändert wird.
Benutzerdefiniertes Sortieren
Für komplexere Sortierszenarien, z. B. das Sortieren basierend auf einem benutzerdefinierten Komparator oder das Sortieren einer Struktur nach einem ihrer Felder, können Sie das sort.Interface
-Interface implementieren, das die Methoden Len()
, Less(i, j int) bool
und Swap(i, j int)
erfordert.
Hier ist ein Beispiel für das Sortieren eines Slice von Strukturen nach einem bestimmten Feld:
package main import ( "fmt" "sort" ) type Person struct { Name string Age int } type ByAge []Person func (a ByAge) Len() int { return len(a) } func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age } func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func main() { people := []Person{ {"Alice", 30}, {"Bob", 25}, {"Charlie", 35}, } sort.Sort(ByAge(people)) fmt.Println(people) }
Dies gibt Folgendes aus:
[{Bob 25} {Alice 30} {Charlie 35}]
In diesem Beispiel definieren wir eine Person
-Struktur und einen ByAge
-Typ, der das sort.Interface
zum Sortieren von Personen nach Alter implementiert. Die Funktion sort.Sort
sortiert dann den Slice gemäß der für ByAge
definierten Less
-Methode.
Schlussfolgerung
Das Sortieren in Go ist mit dem sort
-Paket unkompliziert. Während Arrays eine feste Größe haben und weniger häufig verwendet werden, bieten Slices mehr Flexibilität und sind der Standard für Sammlungen in Go. Indem Sie Arrays in Slices konvertieren, können Sie die leistungsstarken Sortierfunktionen von Go nutzen, um Ihre Daten effizient zu organisieren.
FAQs
Nein, das sort
-Paket von Go funktioniert nur mit Slices, daher müssen Arrays vor dem Sortieren in Slices konvertiert werden.
Verwenden Sie sort.Float64s(slice)
, um einen Slice von float64
-Werten in aufsteigender Reihenfolge zu sortieren.
Implementieren Sie die sort.Interface
-Methoden (Len()
, Less()
, Swap()
) für den Strukturtyp und verwenden Sie sort.Sort()
.
Wir sind Leapcell, Ihre erste Wahl für das Hosten von Go-Projekten.
Leapcell ist die Serverless-Plattform der nächsten Generation für Webhosting, asynchrone Aufgaben und Redis:
Multi-Language Support
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Stellen Sie unbegrenzt Projekte kostenlos bereit
- Zahlen Sie nur für die Nutzung – keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 $ unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatische CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für umsetzbare Erkenntnisse.
Mühelose Skalierbarkeit und hohe Leistung
- Automatische Skalierung zur mühelosen Bewältigung hoher Parallelität.
- Null Betriebsaufwand – konzentrieren Sie sich einfach auf das Bauen.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ