type Timer struct{
c <- chan Time
}
方法
- func NewTimer(d Duration) *Timer
- func AfterFunc(d Duration, f func()) *Timer
- 新开一个协程, 等待 d 时间后执行函数 f
- 返回一个 *Timer, 可以用来调用 Stop(),Rest()
- func (t *Timer) Reset(d Duration) bool
- Reset使t重新开始计时,(本方法返回后再)等待时间段d过去后到期。如果调用时t还在等待中会返回真;如果t已经到期或者被停止了会返回假。无论执行与否,都会重置
- func (t *Timer) Stop() bool
- Stop停止Timer的执行。如果停止了t会返回真;如果t已经被停止或者过期了会返回假
Ticker
type Ticker struct {
C <-chan Time // 周期性传递时间信息的通道
// 内含隐藏或非导出字段
}
方法
- func NewTicker(d Duration) *Ticker
- NewTicker返回一个新的Ticker,该Ticker包含一个通道字段,并会每隔时间段d就向该通道发送当时的时间。
- 会调整时间间隔或者丢弃tick信息以适应反应慢的接收者。
- func (t *Ticker) Stop()
- Stop关闭一个Ticker。在关闭后,将不会发送更多的tick信息
对比Timer & Ticker
- Timer 只执行一次,Ticker会循环执行,Timer 可通过重置方法来实现Ticker 类似的功能
- Timer 可以定时执行一个函数, Ticker 通过for 循环可以实现相同功能
- Timer 可以重置,Ticker 设置后无法重新设置