- #计时器、#定时器
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