何らかの処理を定期的に実行する場合にtickerを利用する方法
func main() {
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case t := <-ticker.C:
fmt.Println("Current time: ", t)
}
}
}
参考
応用
シグナルで停止する
func main() {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs)
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case t := <-ticker.C:
fmt.Println("Current time: ", t)
case <-sigs:
fmt.Println("done")
return
}
}
}
他のチャネルと合わせる
func main() {
c := make(chan int, 1)
go func() {
for i := 0; i < 10; i++ {
time.Sleep(500 * time.Millisecond)
c <- i
}
close(c)
}()
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case i, ok := <-c:
if !ok {
fmt.Println("done")
return
}
fmt.Println("i = ", i)
case t := <-ticker.C:
fmt.Println("Current time: ", t)
}
}
}