Как работает time.Ticker?

Junior
761 просмотров
AFK Offer AI

time.Ticker отправляет значения в канал с фиксированным интервалом:

ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop() // ОБЯЗАТЕЛЬНО — иначе утечка горутины

for { select { case t := <-ticker.C: fmt.Println("tick at", t) case <-done: return } }

В отличие от time.After (одноразовый таймер), Ticker повторяется. Если получатель не успевает читать — тики не накапливаются, а пропускаются.

Для одноразовой задержки:

timer := time.NewTimer(5 * time.Second)
<-timer.C // ждём 5 секунд

time.Tick(d) — удобный вариант без Stop(), но утекает. Используй только в main/long-lived горутинах.

Следующий вопрос

Как устроены таблицы Map в Go?