ege's wiki

$ cat wiki/programming/golang/time.ticker.md

time.Ticker

updated golang

Simple

ticker := time.NewTicker(5 * time.Second)
for range ticker.C {
	log.Println("Hey!")
}

With timeout

ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()

timeout := time.NewTimer(300 * time.Second)
defer timeout.Stop()

for {
	select {
	case <-timeout.C:
		return errors.New("timeout")
	case <-ticker.C:
		// do
	}
}