将来のある時点や一定間隔で繰り返し Go コードを実行したい、 と思うことがよくあります。Go の組み込み機能である タイマー (timer) と ティッカー (ticker) は、 これら両方のタスクを容易にします。 まず最初にタイマーを見て、次に ティッカー を見ていきましょう。 |
|
package main |
|
import ( "fmt" "time" ) |
|
func main() { |
|
タイマーは、将来の 1 回限りのイベントを表します。 タイマーに待ち時間を指定すると、指定した時間が 経過した後で通知してくれるチャネルが提供されます。 このタイマーは、2 秒間待ちます。 |
timer1 := time.NewTimer(2 * time.Second) |
|
<-timer1.C fmt.Println("Timer 1 fired") |
ただ待ちたいだけであれば、 |
timer2 := time.NewTimer(time.Second) go func() { <-timer2.C fmt.Println("Timer 2 fired") }() stop2 := timer2.Stop() if stop2 { fmt.Println("Timer 2 stopped") } |
|
time.Sleep(2 * time.Second) } |
1 つ目のタイマーは、プログラムを開始してから高々 2 秒後には発火しますが、2 つ目のタイマーは発火する前に 停止させられるはずです。 |
$ go run timers.go Timer 1 fired Timer 2 stopped |
Next example: Tickers.