登录
首页 >  Golang >  Go问答

使用循环为多个任务创建CRON函数

来源:stackoverflow

时间:2024-02-28 12:36:24 394浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《使用循环为多个任务创建CRON函数》,聊聊,我们一起来看看吧!

问题内容

import (
    "fmt"

    "gopkg.in/robfig/cron.v3"
)

func test(x int) {
    fmt.Println("acessesing device", x)
}
func main() {
    c := cron.New()
    x := make(chan bool)
    devices := [10]int{1,2,3,4,5,6,7,8,9,10}
    for _, va := range devices {
        c.AddFunc("@every 30s", func() { test(va) })
    }

    c.Start()
    <-x
}

上述程序得到的输出:

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

访问网关13

我喜欢用不同的输入运行相同的函数

每 30 秒的预期输出

访问网关1

访问网关2

访问网关3

访问网关4

访问网关5

访问网关6

访问网关7

访问网关8

访问网关9

访问网关10


解决方案


您的代码中的问题与此处描述的问题相同:

https://github.com/golang/go/wiki/CommonMistakes#using-goroutines-on-loop-iterator-variables

修复它:

for _, va := range devices {
    va := va // create a new "va" variable on each iteration
    c.AddFunc("@every 30s", func() { test(va) })
}

理论要掌握,实操不能落!以上关于《使用循环为多个任务创建CRON函数》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>