Часто мы хотим выполнить код Go в какой-то момент в будущем или повторно через определенный промежуток времени. Встроенные функции таймера и тикера Go облегчают обе эти задачи. Сначала мы рассмотрим таймеры, а затем тикеры. |
|
package main
|
|
import (
"fmt"
"time"
)
|
|
func main() {
|
|
Таймеры позволяет выполнить одно событие в будущем. Вы сообщаете таймеру, как долго вы хотите ждать, и он предоставляет канал, который будет уведомлен в это время. Этот таймер будет ждать 2 секунды. |
timer1 := time.NewTimer(2 * time.Second)
|
|
<-timer1.C
fmt.Println("Timer 1 expired")
|
Если бы вы просто хотели подождать, вы могли бы
использовать |
timer2 := time.NewTimer(time.Second)
go func() {
<-timer2.C
fmt.Println("Timer 2 expired")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("Timer 2 stopped")
}
}
|
Первый таймер истекает через ~2с после запуска программы, но второй должен быть остановлен до того, как он истечет. |
$ go run timers.go
Timer 1 expired
Timer 2 stopped
|
Следующий пример: Тикеры (повторения) (Tickers).