关于golang time.Ticker的一个问题

ysh0566 · · 2244 次点击
你要看下,go 的用法,go执行匿名闭包函数时,传值的时候默认是拷贝传值的,你用*time.Newticker相当于传的就是一个值类型的拷贝,go func里面的ticker跟外面定义的不是一个了,是一个拷贝,之前的ticker是一个指针,所以拷贝指向的还是同一个ticker,你现在stop的只是拷贝的一个ticker,不是外面的那个,你可以打印一下两个ticker的内存地址,看看不是同一个了
#11
更多评论
结果是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