Метод time.Ticker.Stop
Метод time.Ticker.Stop останавливает тикер,
прекращая отправку значений времени в его канал.
После вызова этого метода канал тикера больше не будет
получать новые значения. Метод возвращает bool:
true, если тикер был остановлен впервые,
и false, если тикер уже был остановлен ранее.
Синтаксис
ticker.Stop()
Пример
Давайте создадим тикер и остановим его через некоторое время:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(500 * time.Millisecond)
go func() {
for t := range ticker.C {
fmt.Println(t)
}
}()
time.Sleep(2 * time.Second)
stopped := ticker.Stop()
fmt.Println("Ticker stopped:", stopped)
time.Sleep(1 * time.Second)
}
Результат выполнения кода:
"2026-09-04 10:00:00.5 +0300 MSK m=+0.500000001"
"2026-09-04 10:00:01.0 +0300 MSK m=+1.000000001"
"2026-09-04 10:00:01.5 +0300 MSK m=+1.500000001"
"2026-09-04 10:00:02.0 +0300 MSK m=+2.000000001"
"Ticker stopped: true"
Пример
Давайте попробуем остановить уже остановленный тикер:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
stopped1 := ticker.Stop()
stopped2 := ticker.Stop()
fmt.Println("First stop:", stopped1)
fmt.Println("Second stop:", stopped2)
}
Результат выполнения кода:
"First stop: true"
"Second stop: false"
Пример
Давайте используем Stop для корректного завершения работы горутины:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(300 * time.Millisecond)
done := make(chan bool)
go func() {
for {
select {
case t := <-ticker.C:
fmt.Println("Tick at:", t)
case <-done:
fmt.Println("Goroutine stopped")
return
}
}
}()
time.Sleep(1 * time.Second)
ticker.Stop()
done <- true
time.Sleep(200 * time.Millisecond)
}
Результат выполнения кода:
"Tick at: 2026-09-04 10:00:00.3 +0300 MSK m=+0.300000001"
"Tick at: 2026-09-04 10:00:00.6 +0300 MSK m=+0.600000001"
"Tick at: 2026-09-04 10:00:00.9 +0300 MSK m=+0.900000001"
"Goroutine stopped"
Смотрите также
-
тип
time.Ticker,
который представляет тикер для периодических событий -
метод
time.Ticker.Reset,
который изменяет интервал срабатывания тикера -
тип
time.Timer,
который представляет таймер для однократного события -
метод
time.Timer.Stop,
который останавливает таймер