Функция time.NewTimer
Функция time.NewTimer создает новый таймер, который
отправит текущее время в свой канал C по истечении
заданного интервала. В первый параметр функция принимает
значение типа time.Duration, определяющее
длительность ожидания перед срабатыванием таймера.
Функция возвращает указатель на структуру time.Timer.
Синтаксис
time.NewTimer(duration)
Пример
Давайте создадим таймер, который сработает через 2 секунды:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(2 * time.Second)
// Ждем сигнал от таймера
t := <-timer.C
fmt.Println("Timer fired at:", t)
}
Результат выполнения кода:
"Timer fired at: 2024-01-15 12:34:56.789012345 +0300 MSK m=+2.000123456"
Пример
Давайте используем таймер для выполнения действия с задержкой и остановим его до срабатывания:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(5 * time.Second)
go func() {
<-timer.C
fmt.Println("Timer fired")
}()
time.Sleep(2 * time.Second)
stopped := timer.Stop()
if stopped {
fmt.Println("Timer stopped")
}
}
Результат выполнения кода:
"Timer stopped"
Пример
Давайте создадим таймер, который можно перезапустить
с помощью метода Reset:
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(1 * time.Second)
<-timer.C
fmt.Println("First timer fired")
// Перезапускаем таймер на 2 секунды
timer.Reset(2 * time.Second)
<-timer.C
fmt.Println("Second timer fired")
}
Результат выполнения кода:
"First timer fired"
"Second timer fired"
Смотрите также
-
функцию
time.After,
которая возвращает канал, в который будет отправлено время через указанный интервал -
функцию
time.Sleep,
которая приостанавливает выполнение горутины на заданное время -
метод
time.Timer.Stop,
который останавливает таймер и предотвращает его срабатывание -
метод
time.Timer.Reset,
который изменяет интервал таймера и запускает его заново