Đây là mã của tôi (run):Thông số đóng cửa "trì hoãn" của golang bắt buộc như thế nào?
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
}
Output:
0 1 2 3 4 4 3 2 1 0 4 4 4 4 4
Câu hỏi: Sự khác nhau giữa phần 2 & phần 3 là gì? Tại sao phần 2 xuất ra "44444" thay vì ""?