Метод time.Timer.Reset
Метод Timer.Reset позволяет изменить длительность ожидания уже существующего таймера.
Он останавливает текущий отсчет и запускает таймер заново с новой длительностью.
Метод возвращает true, если таймер был активен на момент вызова,
и false, если таймер уже истек или был остановлен.
Метод принимает один параметр - новую длительность типа time.Duration.
Синтаксис
timer.Reset(duration)
Пример
Давайте создадим таймер на 1 секунду и сбросим его на 2 секунды до истечения:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(1 * time.Second)
active := timer.Reset(2 * time.Second)
fmt.Println(active)
}
Результат выполнения кода:
true
Пример
Давайте создадим таймер на 1 секунду, подождем 2 секунды до его истечения, а затем попытаемся сбросить его:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(1 * time.Second)
time.Sleep(2 * time.Second)
active := timer.Reset(1 * time.Second)
fmt.Println(active)
}
Результат выполнения кода:
false
Пример
Давайте используем Reset в сочетании с каналом таймера для создания повторяющихся действий с изменяемой задержкой:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(1 * time.Second)
for i := 0; i < 3; i++ {
<-timer.C
fmt.Println("tick", i)
timer.Reset(1 * time.Second)
}
}
Результат выполнения кода:
"tick 0"
"tick 1"
"tick 2"
Пример
Давайте продемонстрируем изменение длительности таймера с помощью Reset в зависимости от условий:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(500 * time.Millisecond)
for i := 0; i < 5; i++ {
<-timer.C
fmt.Println("event", i)
if i%2 == 0 {
timer.Reset(300 * time.Millisecond)
} else {
timer.Reset(700 * time.Millisecond)
}
}
}
Результат выполнения кода:
"event 0"
"event 1"
"event 2"
"event 3"
"event 4"
Смотрите также
-
метод
time.Timer.Stop,
который останавливает таймер до его срабатывания -
функцию
time.NewTimer,
которая создает новый таймер с указанной длительностью -
тип
time.Duration,
который представляет интервал времени -
функцию
time.AfterFunc,
которая вызывает функцию после истечения длительности