Spóźniam się dwa lata, ale dla zabawy i zainteresowania chciałbym wnieść wkład w "dziwne" rozwiązanie.
Zakładając, że zadaniem jest na pewno odwrócenie listy, to dla nieprzetworzonego rozwiązania bgp jest prawdopodobnie nie do pokonania. Robi to zadanie w prosty i skuteczny sposób, zamieniając elementy tablicy na przednie i tylne, operację, która jest wydajna w strukturze dostępu losowego macierzy i wycinków.
W językach programowania funkcjonalnego podejście idiomatyczne często wymagałoby rekurencji. To wygląda trochę dziwnie w Go i będzie miało okropną wydajność. Powiedział, że tu jest rekurencyjna funkcja odwrócenia array (w małym programem testowym):
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])
}
wyjściowa:
Ints [8 6 7 5 3 0 9] reversed: [9 0 3 5 7 6 8]
Ponownie, jest to dla zabawy, a nie produkcji. Nie tylko jest powolny, ale spowoduje przepełnienie stosu, jeśli lista jest zbyt duża. Właśnie przetestowałem i odwróci listę 1 miliona int
s, ale zawiesza się na 10 milionach.
Zobacz http://stackoverflow.com/questions/18343208/how-to-reverse-sort-a-slice-of-integer-golang. Myślę, że musisz użyć 'Sortuj', aby zrobić to łatwo. – Intermernet