14.5 通道、超时和计时器(Ticker)
...小于 1 分钟
14.5 通道、超时和计时器(Ticker)
14.5.1 计时器
time.Ticker, 可以指定时间间隔重复向通道c发送时间值:
type Ticker struct {
    C <-chan Time // the channel on which the ticks are delivered.
    // contains filtered or unexported fields
    ...
}
通过工厂函数func NewTicker(dur) *Ticker指定时间间隔。
time.Tick(): Tick(d Duration) <-chan Time 返回通道。
14.5.2 定时器
定时器 (Timer) 结构体看上去和计时器 (Ticker) 结构体的确很像(构造为 NewTimer(d Duration)),但是它只发送一次时间,在 Dration d 之后。
time.After(): func After(d Duration) <-chan Time
package chapter_14
import (
	"fmt"
	"time"
)
func mainTimer() {
	tick := time.Tick(time.Second)
	timer := time.After(5 * time.Second)
	for {
		select {
		case <-tick:
			fmt.Println("tick")
		case <-timer:
			fmt.Println("boom")
			return
		default:
			fmt.Println(".")
			time.Sleep(500 * time.Millisecond)
		}
	}
}
.
.
tick
.
.
tick
.
.
tick
.
.
tick
.
.
tick
boom
 Powered by  Waline  v2.15.2
