Go的time.Ticker
為定時器,會定時發送當時時間到channel屬性C <- Time
。
下面範例呼叫NewTicker
建立一個2秒的定時器,用for range channel取得屬性C <-chan time.Time
每2秒發出的當下時間。當定時時間超過開始時間10秒則離開for range並呼叫Ticker.Stop
停止定時,即停止發送時間到channel,但注意C
的channel不會被關閉。
main.go
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("start ticker")
now := time.Now() // 開始時間
ticker := time.NewTicker(time.Second * 2) // 開始定時,每2秒發送當時時間到channal
for t := range ticker.C { // 接收channel時間至t
sec := t.Second()
if t.After(now.Add(time.Second * 10)) { // 當定時器的時間超過開始時間後10秒離開迴圈
break
}
fmt.Println(sec)
}
ticker.Stop() // 停止定時
fmt.Println("stop ticker")
}
執行可能印出以下。
start ticker
17
19
21
23
stop ticker
沒有留言:
張貼留言