Введение
Этот лаба посвящен использованию тикеров в Golang. Тикеры используются, когда вы хотите выполнять какое-то действие с регулярным интервалом.
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
Этот лаба посвящен использованию тикеров в Golang. Тикеры используются, когда вы хотите выполнять какое-то действие с регулярным интервалом.
В этом лабе вам нужно создать тикер, который будет тикать каждые 500 миллисекунд, пока мы не остановим его. Вы будете использовать канал для ожидания значений по мере их поступления.
time
для создания тикера.select
для приема значений из канала.## Когда мы запускаем эту программу, тикер должен тикать 3 раза
## до тех пор, пока мы не остановим его.
$ go run tickers.go
Tick at 2012-09-23 11:29:56.487625 -0700 PDT
Tick at 2012-09-23 11:29:56.988063 -0700 PDT
Tick at 2012-09-23 11:29:57.488076 -0700 PDT
Ticker stopped
Ниже представлен полный код:
// [Таймеры](timers) используются, когда вы хотите сделать
// что-то один раз в будущем - _тикеры_ используются, когда
// вы хотите выполнять какое-то действие с регулярным
// интервалом. Вот пример тикера, который периодически
// тикает, пока мы не остановим его.
package main
import (
"fmt"
"time"
)
func main() {
// Тикеры используют механизм, похожий на таймеры:
// канал, в который отправляются значения. Здесь мы
// будем использовать встроенную функцию `select` для
// канала, чтобы ожидать значений по мере их поступления
// каждые 500 миллисекунд.
ticker := time.NewTicker(500 * time.Millisecond)
done := make(chan bool)
go func() {
for {
select {
case <-done:
return
case t := <-ticker.C:
fmt.Println("Tick at", t)
}
}
}()
// Тикеры можно останавливать, как и таймеры. Как только
// тикер остановлен, он больше не получит никаких значений
// на своем канале. Мы остановим наш тикер после 1600
// миллисекунд.
time.Sleep(1600 * time.Millisecond)
ticker.Stop()
done <- true
fmt.Println("Ticker stopped")
}
В этом лабе вы узнали, как использовать тикеры в Golang. Вы создали тикер, который тикает каждые 500 миллисекунд, пока мы не остановим его, использовали канал для ожидания значений по мере их поступления и остановили тикер после 1600 миллисекунд.