Введение
В этом практическом занятии рассматривается использование таймеров и тикеров в Golang. Таймеры и тикеры полезны для выполнения кода в определенное время или повторения его с заданным интервалом.
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом практическом занятии рассматривается использование таймеров и тикеров в Golang. Таймеры и тикеры полезны для выполнения кода в определенное время или повторения его с заданным интервалом.
В практическом занятии требуется реализовать таймер, который будет ожидать заданный период времени и затем сработать. Кроме того, таймер должен быть отменяемым до срабатывания.
time
.// Первый таймер сработает приблизительно через 2 секунды после запуска
// программы, а второй должен быть остановлен, прежде чем успеет сработать.
$ go run timers.go
Timer 1 fired
Timer 2 stopped
Ниже представлен полный код:
// Мы часто хотим выполнить Go-код в будущем или повторять его с определенным интервалом. Встроенные в Go
// функции _таймера_ и _тикера_ упрощают оба эти действия. Сначала рассмотрим таймеры, а затем
// [тикеры](tickers).
package main
import (
"fmt"
"time"
)
func main() {
// Таймеры представляют собой одно событие в будущем. Вы
// сообщаете таймеру, сколько времени вы хотите дождаться, и он
// предоставляет канал, по которому будет отправлено уведомление в то время. Этот таймер будет ждать 2 секунды.
timer1 := time.NewTimer(2 * time.Second)
// `<-timer1.C` блокируется на канале `C` таймера,
// пока он не отправит значение, указывающее на то, что таймер сработал.
<-timer1.C
fmt.Println("Timer 1 fired")
// Если вы просто хотели дождаться, вы могли бы использовать
// `time.Sleep`. Одна из причин, по которой таймер может быть полезен, заключается в том, что вы можете отменить таймер до его срабатывания.
// Вот пример этого.
timer2 := time.NewTimer(time.Second)
go func() {
<-timer2.C
fmt.Println("Timer 2 fired")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("Timer 2 stopped")
}
// Дайте `timer2` достаточно времени, чтобы сработать, если это когда-либо случилось, чтобы показать, что он на самом деле остановлен.
time.Sleep(2 * time.Second)
}
В этом практическом занятии показано использование таймеров в Golang. Таймеры могут быть использованы для выполнения кода в определенное время или для ожидания заданного периода времени перед выполнением кода. Кроме того, таймеры могут быть отменены до их срабатывания.