1. #计时器、#定时器

Timer

Timer 类型代表单次时间事件。当 Timer 到期时,向自身的C管道发送当前时间,除非 Timer 是被 AfterFunc 函数创建的。

time.NewTimer

func NewTimer(d Duration) *Timer // 数秒后会向自身的C管道发送当前时间

示例:

func main() {
	fmt.Println("now:", time.Now())
	timer := time.NewTimer(2 * time.Second)
	go func() {
		c := <-timer.C
		fmt.Println("timer", c)
	}()
	for true {
		time.Sleep(time.Second)
		fmt.Println("now:", time.Now())
	}
}

输出:

now: 2021-08-20 15:14:13.5082272 +0800 CST m=+0.007998701 now: 2021-08-20 15:14:14.5432783 +0800 CST m=+1.043049801 timer 2021-08-20 15:14:15.547278 +0800 CST m=+2.047049501 now: 2021-08-20 15:14:15.547278 +0800 CST m=+2.047049501

time.AfterFunc

在指定时间后,创建一个新的goroutine来执行传入函数

func AfterFunc(d Duration, f func()) *Timer

time.After

经过指定时间后,自身的C管道发送当前时间

func After(d Duration) <-chan Time

Ticker

每隔一段时间向自身的C管道发送当前时间

time.NewTicker

func NewTicker(d Duration) *Ticker