为了账号安全,请及时绑定邮箱和手机立即绑定

在函数定义中使用局部值

在函数定义中使用局部值

Go
德玛西亚99 2021-08-16 19:07:49
下面的程序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 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

就是惯用的做法。

如果您立即调用该函数,您也可以将其作为参数传递。


查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信