首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过遍历列表来创建多个CRON函数

如何通过遍历列表来创建多个CRON函数
EN

Stack Overflow用户
提问于 2019-07-18 21:04:24
回答 1查看 240关注 0票数 0
代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-18 21:32:28

您的代码中的问题等同于下面描述的问题:

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

要修复它,请执行以下操作:

代码语言:javascript
运行
复制
for _, va := range devices {
    va := va // create a new "va" variable on each iteration
    c.AddFunc("@every 30s", func() { test(va) })
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57095167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档