func main() {
var lists []func()
var vue []int
for a := 1; a < 3; a++ {
vue = append(vue, a)
lists = append(lists, func() {fmt.Println(a)})
}
fmt.Println(vue) // [1,2]
for _, f := range lists {
f() //[3,3]
}
}
每次循环产生的函数,其记录的是循环变量的地址,所有循环产生的函数公用这一个值。