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