Ho eseguito attraverso un answer su una questione di "gamma inversa" e mi stava per down-voto come sembrava ridicolmente sbagliato, ma controllato e in realtà funziona (!):Vai: Perché il rinvio del ciclo di intervallo viene chiamato in ordine inverso?
https://play.golang.org/p/4K2fDlSoCm
package main
import (
"fmt"
)
func main() {
s := []int{1, 2, 3, 4, 5}
for i, _ := range s {
defer fmt.Println(s[i])
}
}
e l'uscita è:
5
4
3
2
1
Program exited.
Tutte le idee perché funziona in questo modo? Ho ragione, non è garantito che venga eseguito esattamente nell'ordine inverso? Inoltre, non penso che sia un buon modo per scrivere programmi ma curioso di scoprire perché stiamo ottenendo questo risultato.
Grazie, ora ha senso. Ma usare all'interno di un ciclo per il reverse è piuttosto complicato e dovrebbe essere piuttosto inefficace dal punto di vista della memoria. –
Sì, ricordo di non essere entusiasta di quell'esempio di play.golang, perché è così inventato da essere confuso e non capisco perché debba essere invertito. Felice di poterti aiutare! – dwanderson