來源:https://github.com/xg-wang/gobyexample/tree/master/examples
//我們需要在將來一個時刻運行 Go 代碼,或者在某段時間間隔內(nèi)重復(fù)運行。 Go 的內(nèi)置 _定時器_和_打點器_特性很容易實現(xiàn)
package main
import (
"fmt"
"time"
)
func main() {
//定時器表示在未來某一時刻的獨立事件铆惑。告訴定時器需要等待的時間
//格带,然后它將提供一個用于通知的通道
timer1 := time.NewTimer(time.Second * 4)
//`<-timer1.C`直到這個定時器的通道`C` 明確的發(fā)送了定時器失效的值之前聚请,將一直阻塞
<-timer1.C
fmt.Println("Timer 1 expired")
//如果是僅僅單純的等待,需要使用`time.Sleep`
//定時器是有原因之一就是你可以在定時器失效之前,取消這個定時器
timer2 := time.NewTimer(time.Second)
go func() {
<-timer2.C
fmt.Println("Timer 2 expired")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("Timer 2 stopped")
}
}
輸出結(jié)果:
Timer 1 expired
Timer 2 stopped