Метод time.Ticker.Reset
Метод Reset типа *time.Ticker
позволяет изменить интервал между тиками
(период отправки значений в канал тикера)
и перезапустить отсчет времени заново.
Он принимает один параметр - новую длительность
time.Duration. Метод возвращает
true, если тикер был активен на момент
вызова, и false, если тикер был
остановлен ранее с помощью Stop.
Важно: после вызова Reset старый канал
тикера продолжает существовать, но новые тики
будут отправляться в него с новым интервалом.
Синтаксис
ticker.Reset(d)
Пример
Создадим тикер с периодом 200 миллисекунд,
затем через 500 миллисекунд изменим интервал
на 100 миллисекунд с помощью Reset:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(200 * time.Millisecond)
defer ticker.Stop()
go func() {
time.Sleep(500 * time.Millisecond)
ok := ticker.Reset(100 * time.Millisecond)
fmt.Println("Reset called, active:", ok)
}()
count := 0
for range ticker.C {
count++
fmt.Println("Tick", count)
if count >= 6 {
break
}
}
}
Результат выполнения кода:
"Tick 1"
"Tick 2"
"Reset called, active: true"
"Tick 3"
"Tick 4"
"Tick 5"
"Tick 6"
Пример
Если вызвать Reset на остановленном
тикере, метод вернет false, но при
этом тикер будет перезапущен с новым интервалом:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(500 * time.Millisecond)
ticker.Stop()
ok := ticker.Reset(200 * time.Millisecond)
fmt.Println("Reset after Stop, active:", ok)
count := 0
for range ticker.C {
count++
fmt.Println("Tick", count)
if count >= 3 {
break
}
}
}
Результат выполнения кода:
"Reset after Stop, active: false"
"Tick 1"
"Tick 2"
"Tick 3"
Смотрите также
-
метод
time.Ticker.Stop,
который останавливает тикер и освобождает ресурсы -
функцию
time.NewTicker,
которая создает новый тикер с указанным интервалом -
функцию
time.Tick,
которая возвращает канал, генерирующий тики с заданным периодом -
тип
time.Duration,
который используется для задания интервала времени