在以下代码段中,我创建了一个功能列表,按照我的观察方式,该功能列表应包含打印数字0 1 2的功能。
package main
import "fmt"
func main() {
flist := make([]func(), 0)
for i := 0; i < 3; i++ {
flist = append(flist, func() { fmt.Printf("%d ", i) })
}
for j := 0; j < 3; j++ {
flist[j]()
}
}
但是,所有函数flist均相同main.main.func1,输出为
3 3 3
即使i在循环中永远不会达到值3。这会让我觉得func只是简单地使用的地址i,每次都创建相同的func,但是i当以后调用func时,这超出了范围。
我在这里想念什么?
吃鸡游戏
相关分类