Sortierung uint64 slice in go
Ich Schreibe Go-Anwendung mit Gehen 1.7rc3.
Habe ich eine Scheibe uint64 ( var dirRange []uint64
), dass ich die Liste Sortieren möchten.
die Art Paket hat eine Funktion sort.Ints()
aber es erfordert []int
und ich habe []uint64
.
was kann ich tun? kann ich Typumwandlung die ganze Scheibe ?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ab der version 1.8 können Sie verwenden die einfachere Funktion
Sortieren.Slice
. In Ihrem Fall, es wäre so etwas wie die folgenden:Dies vermeidet zu definieren, jede Art nur für die Sortierung.
i
undj
.Können Sie definieren
sort.Interface
auf IhredirRange
, die eine Art aliasing[]uint64
:Ausgabe:
Diese Weise können Sie vermeiden, casting und arbeiten direkt mit Ihrem array. Da der zugrunde liegende Typ ist eine Scheibe
[]uint64
Sie können immer noch Allgemeine slice-Operationen. Zum Beispiel:Können Sie bieten eine Art alias für []uint64, fügen Sie die standard - "boilerplate" Sortier-Methoden zu implementieren
sort.interface
(Len
,Swap
, undLess
- https://golang.org/pkg/sort/#Interface); dann entweder erstellen Sie eine Instanz des neuen Typs oder Umwandlung einer bestehenden slice []uint64 in die neue Art, wie in dem folgenden Beispiel (auch https://play.golang.org/p/BbB3L9TmBI):Ausgabe:
zeigen, dass beide arrays sind sortiert, da die zweite ist eine typecasted alias für das original.