go 语言 ticker 的使用

ticker 概述

Ticker 是一个定时触发的计时器,它会以一个间隔(interval)往channel发送一个事件(当前时间),而channel的接收者可以以固定的时间间隔从channel中读取事件。

使用示例: Ticker 每沿时一秒输出一个结果

package main

import "time"

func main() {
	ticker := time.NewTicker(time.Second)
	counter := 0
	for _ = range ticker.C {
		counter++
		println(counter)
		if counter >= 5 {
			ticker.Stop()
			break
		}
	}
}

与管道配合使用的例子

package main

import "time"

func main() {
	ch := make(chan int)
	ticker := time.NewTicker(time.Second)
	go func() {
		counter := 0
		for _ = range ticker.C {
			counter++
			ch <- counter
		}
	}()

	for {
		time.Sleep(time.Second)
		select {
		case v := <-ch:
			println("tick ", v)
			if v >= 10 {
				ticker.Stop()
			}
		default:
			println("default")
		}
	}

	println("main end")
}