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

无法在 for 循环中将变量分配给匿名函数

无法在 for 循环中将变量分配给匿名函数

Go
月关宝盒 2021-09-21 15:12:50
我正在通过开发任务计划来学习 go-lang。我使用的cron 库接受一个 cron 表达式和一个 func 作为参数来添加调度程序。c.AddFunc("0 30 * * * *", func() { fmt.Println("每半小时") })我正在根据 yaml 文件开发计划作业。所以我迭代作业以添加这样的调度程序:类型作业结构{    名称字符串    间隔字符串}func DistributeJob(作业作业){    log.Println("running", job, job.Interval)}功能主(){    //从yaml加载配置    c := cron.New()    对于 _, 工作 := 范围 config.Jobs {        c.AddFunc("@every"+job.Interval, func() {            分发作业(作业)        })        log.Println("Job " + job.Name + " 已安排!")    }    c.开始()    选择 {}}所有作业都按它们的时间间隔安排,但事实证明它们正在打印最后一个作业的描述。例如,如果我安排两个作业,第一个间隔为 3 分钟,后一个间隔为 1 分钟。控制台打印:12:01:运行后1分钟12:02:跑后1分钟12:03:跑后1分钟12:03:跑后1分钟//这应该是第一个工作我认为问题出在    功能(){        分发作业(作业)    })似乎只需要最后一份工作,但我不知道为什么。我尝试使用    c.AddFunc("@every"+job.Interval, func(job JobType) {        分发作业(作业)    }(工作))但由于不能用作值而失败
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

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