昨天写代码的时候发现有一段代码的本应该是两秒的ticker足足10分钟才触发下一次的任务,具体原因在哪里也不清楚,应该是某处的bug了,但是我在测试的时候发现了一些不太理解的问题,求大佬能解惑。贴代码和执行结果:
![QQ20180522-0.png](https://static.studygolang.com/180522/a988243d4c6ae262e6537834906e4967.png)
time.NewTicker返回的是一个指针,你用 *time.NewTicker 等于是拷贝了结构体值,然而结构体里面除了 C,还有一个runtimeTimer,这个也被拷贝了,大概这就是stop无法生效的原因吧。
总结:闲的蛋疼
#5
更多评论
time.NewTicker 返回的就是一个 *Ticker,你再取一次指针操作没有必要,我修改了一下代码,
```go
go func() {
time.Sleep(3 * time.Second)
fmt.Println("--start stop--")
ticker.Stop()
fmt.Println("--end stop--")
}()
```
ticker.stop() 被调用了,但是没有停止,估计是和你取了两次指针操作有关
#2