Метод time.Ticker.Reset

Метод Reset типа *time.Ticker позволяет изменить интервал между тиками (период отправки значений в канал тикера) и перезапустить отсчет времени заново. Он принимает один параметр - новую длительность time.Duration. Метод возвращает true, если тикер был активен на момент вызова, и false, если тикер был остановлен ранее с помощью Stop. Важно: после вызова Reset старый канал тикера продолжает существовать, но новые тики будут отправляться в него с новым интервалом.

Синтаксис

goticker.Reset(d)

Пример

Создадим тикер с периодом 200 миллисекунд, затем через 500 миллисекунд изменим интервал на 100 миллисекунд с помощью Reset:

gopackage 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
    }
  }
}

Результат выполнения кода:

go"Tick 1"
"Tick 2"
"Reset called, active: true"
"Tick 3"
"Tick 4"
"Tick 5"
"Tick 6"

Пример

Если вызвать Reset на остановленном тикере, метод вернет false, но при этом тикер будет перезапущен с новым интервалом:

gopackage 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
    }
  }
}

Результат выполнения кода:

go"Reset after Stop, active: false"
"Tick 1"
"Tick 2"
"Tick 3"

Смотрите также

  • метод time.Ticker.Stop,
    который останавливает тикер и освобождает ресурсы
  • функцию time.NewTicker,
    которая создает новый тикер с указанным интервалом
  • функцию time.Tick,
    которая возвращает канал, генерирующий тики с заданным периодом
  • тип time.Duration,
    который используется для задания интервала времени