无法停止计时器行情

时间:2018-06-25 10:41:02

标签: go timer goroutine

我定义了一些行情自动收录器,当我尝试停止它们时,我会在下面看到

  

未定义:股票行情指示器中的股票。停止

     

未定义:Q30sticker中的Q30sticker。停止

代码示例:

if activenode() {
                    cipaflage = true
                    break

                } else {
                    if cipaflage == true {
                        defer ticker.Stop()
                        defer Q30sticker.Stop()
                        cipaflage = false
                        }
                    continue
                }

我已经声明了以下代码

ticker := time.NewTicker(59 * time.Second)
Q30sticker := time.NewTicker(time.Second * 30).C

1 个答案:

答案 0 :(得分:0)

根据文档here

Ticker具有导出的字段C

type Ticker struct {
        C <-chan Time // The channel on which the ticks are delivered.
        // contains filtered or unexported fields
}

您可以在C频道上收到“滴答声”或心跳,但如果您这样做,则:

Q30sticker := time.NewTicker(time.Second * 30).C

然后,Q30sticker保留对频道C的引用,而不包含代码类型。定义time.Ticker方法的是Stop结构。

更新您的变量以保留代码类型(通过删除.C):

Q30sticker := time.NewTicker(time.Second * 30)

在您从频道接收的地方,请使用.点语法访问频道。

<-Q30sticker.C