Ich bin 2 Jahre zu spät, aber nur aus Spaß und Interesse möchte ich eine "Oddball" -Lösung beitragen.
Angenommen, die Aufgabe ist wirklich, eine Liste umzukehren, dann ist die Lösung für die rohe Leistung bgp wahrscheinlich unschlagbar. Die Aufgabe wird einfach und effektiv erledigt, indem Array-Elemente von vorne nach hinten getauscht werden, eine Operation, die effizient in der Random-Access-Struktur von Arrays und Slices ist.
In funktionalen Programmiersprachen würde der idiomatische Ansatz oft Rekursion beinhalten. Das sieht in Go ein bisschen komisch aus und wird eine schreckliche Leistung haben. Das heißt, hier ist eine rekursive Array-Umkehrfunktion (in einem kleinen Testprogramm):
package main
import (
"fmt"
)
func main() {
myInts := []int{ 8, 6, 7, 5, 3, 0, 9 }
fmt.Printf("Ints %v reversed: %v\n", myInts, reverseInts(myInts))
}
func reverseInts(input []int) []int {
if len(input) == 0 {
return input
}
return append(reverseInts(input[1:]), input[0])
}
Ausgang:
Ints [8 6 7 5 3 0 9] reversed: [9 0 3 5 7 6 8]
Auch dies ist für Spaß und nicht die Produktion. Es ist nicht nur langsam, aber es wird den Stapel überlaufen, wenn die Liste zu groß ist. Ich habe gerade getestet, und es wird eine Liste von 1 Million int
s umkehren, aber stürzt auf 10 Millionen ab.
Siehe http://stackoverflow.com/questions/18343208/how-to-reverse-sort-a-slice-of-integer-golang. Ich denke, du musst "Sortieren" verwenden, um es einfach zu machen. – Intermernet