1. 首页
  2. 主题
  3. Go问与答

关于golang time.Ticker的一个问题

ysh0566 · · 2717 次点击
昨天写代码的时候发现有一段代码的本应该是两秒的ticker足足10分钟才触发下一次的任务,具体原因在哪里也不清楚,应该是某处的bug了,但是我在测试的时候发现了一些不太理解的问题,求大佬能解惑。贴代码和执行结果: ![QQ20180522-0.png](https://static.studygolang.com/180522/a988243d4c6ae262e6537834906e4967.png)
``` ticker := *time.NewTicker(time.Second) ``` 这句不是再取一次指针,正相反,*是从指针中取值。然后赋值给ticker,我感觉应该是发生了值复制,导致ticker.Stop()停不掉。 具体不太了解底层实现。
#4
更多评论
结果是ticker1的stop没有任何用,但是我看stop方法传入的也是指针啊
#1
time.NewTicker 返回的就是一个 *Ticker,你再取一次指针操作没有必要,我修改了一下代码, ```go go func() { time.Sleep(3 * time.Second) fmt.Println("--start stop--") ticker.Stop() fmt.Println("--end stop--") }() ``` ticker.stop() 被调用了,但是没有停止,估计是和你取了两次指针操作有关
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中