網頁

2022/12/15

Golang Ticker 定時器簡單範例

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

沒有留言:

張貼留言