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

Junior
1.3k просмотров
AFK Offer AI

time.Ticker шлёт значение в канал с заданным интервалом. Используется для периодических задач: пуллинг, heartbeat, сбор метрик.

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

for { select { case <-ticker.C: fmt.Println("tick") case <-ctx.Done(): return } }

Важно: всегда вызывай ticker.Stop(), иначе утечка ресурсов — таймер продолжит тикать, даже если канал никто не читает. В отличие от time.Timer (одноразовый), Ticker повторяется. Если обработка тика дольше интервала, тики не накапливаются — Ticker подстраивает следующий тик. Для простых случаев есть time.Tick(), но он не возвращает способ остановки, поэтому подходит только для вечных циклов.

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

Go vs Java vs Python?