下面的程序package mainimport ( "fmt")type TestFunc func()func main() { fmt.Println() funcs := []TestFunc{} for i:=0; i<5; i++ { //i := i funcs = append(funcs, func() {fmt.Println(i)}) } for _, f := range funcs { f() }}产生输出 5, 5, 5, 5, 5. 取消注释该行后,程序 for i:=0; i<5; i++ { i := i funcs = append(funcs, func() {fmt.Println(i)}) } for _, f := range funcs { f() }产生输出 0、1、2、3、4。有没有更好的(或惯用的)方法将当前值传递给函数声明而不是使用i := i?
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消