Ich habe über eine answer auf eine Frage über „Rückwärtsbereich“ laufen und ich wollte es nach unten Abstimmung, wie es lächerlich falsch schien aber überprüft und es tatsächlich funktioniert (!):Go: Warum wird die Verschiebung in der Range-Schleife in umgekehrter Reihenfolge aufgerufen?
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])
}
}
Und der Ausgang ist:
5
4
3
2
1
Program exited.
Irgendwelche Ideen, warum es so funktioniert? Habe ich Recht, es ist nicht garantiert, dass es genau in der umgekehrten Reihenfolge ausgeführt wird? Ich denke auch nicht, dass es ein guter Weg ist, Programme zu schreiben, aber neugierig zu finden, warum wir dieses Ergebnis bekommen.
Danke, es macht total Sinn jetzt. Aber innerhalb einer Schleife für den umgekehrten Fall zu verwenden ist ziemlich schwierig und sollte in Bezug auf die Speicherkapazität ziemlich ineffektiv sein. –
Ja, ich erinnere mich, dass ich von diesem play.golang-Beispiel nicht begeistert war, weil es so konstruiert ist, dass es verwirrend ist, und es hat nicht wirklich verstanden, warum es umgekehrt sein sollte. Froh, dass ich helfen konnte! – dwanderson