我遇到了一个关于“反向范围”的问题的答案,我打算否决它,因为它看起来非常错误但经过检查并且它确实有效(!):
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])
}
}
输出是:
5
4
3
2
1
Program exited.
任何想法为什么它会以这种方式工作?我是对的,它不能保证完全按照相反的顺序执行吗?此外,我认为这不是编写程序的好方法,但很想知道为什么我们会得到这个结果。
慕森王
相关分类