Sono in ritardo di 2 anni, ma solo per divertimento e interesse mi piacerebbe contribuire con una soluzione "strana".
Supponendo che il compito sia in realtà quello di invertire un elenco, quindi per la prestazione raw la soluzione di bgp è probabilmente imbattibile. Il lavoro viene svolto in modo semplice ed efficace sostituendo gli elementi dell'array da fronte a retro, un'operazione efficiente nella struttura ad accesso casuale di array e slice.
Nei linguaggi di programmazione funzionale, l'approccio idiomatico implica spesso la ricorsione. Questo sembra un po 'strano in Go e avrà prestazioni atroci. Detto questo, ecco una funzione di inversione di matrice ricorsiva (in un piccolo programma di test):
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])
}
uscita:
Ints [8 6 7 5 3 0 9] reversed: [9 0 3 5 7 6 8]
Ancora una volta, questo è per divertimento e non di produzione. Non solo è lento, ma sovrasta lo stack se l'elenco è troppo grande. Ho appena provato, e invertirà una lista di 1 milione int
s ma si blocca su 10 milioni.
fonte
2015-04-03 22:45:49
Vedere http://stackoverflow.com/questions/18343208/how-to-reverse-sort-a-slice-of-integer-golang. Penso che tu debba usare 'Sort' per farlo facilmente. – Intermernet