这是我的代码
package main
import "fmt"
func main() {
var whatever [5]struct{}
for i := range whatever {
fmt.Println(i)
} // part 1
for i := range whatever {
defer func() { fmt.Println(i) }()
} // part 2
for i := range whatever {
defer func(n int) { fmt.Println(n) }(i)
} // part 3
}
输出:
0
1
2
3
4
4
3
2
1
0
4
4
4
4
4
问题:第 2 部分和第 3 部分有什么区别?为什么第 2 部分输出“44444”而不是“43210”?
阿波罗的战车
墨色风雨
相关分类