NewTicker 返回一个新的 Ticker。
ticker.C:
该 Ticker 包含一个通道字段,并会每隔时间段 d 就向该通道发送当时的时间。向其自身的 C 字段发送当时的时间。
它会调整时间间隔或者丢弃 tick 信息以适应反应慢的接收者。
如果d <= 0会触发panic。关闭该 Ticker 可以释放相关资源。
ticker.Reset:
Reset 使 t 重新开始计时,(本方法返回后再)等待时间段 d 过去后到期。
ticker.Stop:
停止定时器
1.定时器
package main import ( "fmt" "time" ) func main() { //创建一个周期性的定时器 ticker := time.NewTicker(3 * time.Second) fmt.Println("当前时间为:", time.Now()) go func() { for { //从定时器中获取数据 t := <-ticker.C fmt.Println("当前时间为:", t) } }() for { time.Sleep(time.Second * 1) } }
2.停止定时器
package main import ( "fmt" "runtime" "time" ) func main() { //创建一个周期性的定时器 ticker := time.NewTicker(3 * time.Second) //定义计数器 count := 1 fmt.Println("当前时间为:", time.Now(), "count = ", count) go func() { for { //从定时器中获取数据 t := <-ticker.C count++ fmt.Println("当前时间为:", t, "count = ", count) if count == 10 { /** 如果周期性定时被消费10次后就停止该定时器 */ ticker.Stop() runtime.Goexit() } } }() for { time.Sleep(time.Second * 1) } }