πŸ’¬ Для Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ tickers Π² Go ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ?



Tickers Π² Go ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для выполнСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ дСйствий Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.



Tickers ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°Π½Π°Π»Ρ‹ Go для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сигнала ΠΏΠΎ истСчСнии ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.



Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ticker Π½Π° Go ΠΌΠΎΠΆΠ½ΠΎ с использованиСм ΠΏΠ°ΠΊΠ΅Ρ‚Π° time. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования:





package main



import (

"fmt"

"time"

)



func main() {

ticker := time.NewTicker(1 * time.Second)

defer ticker.Stop()



for {

select {

case <-ticker.C:

fmt.Println("Tick at", time.Now())

// ...

}

}

}





Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаётся ticker, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«Ρ‚ΠΈΠΊΠ°Π΅Ρ‚Β» ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду. Π’ бСсконСчном Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ сигнала ΠΎΡ‚ ticker.C, ΠΊΠ°Π½Π°Π»Π° Ρ‚ΠΈΠΊΠ΅Ρ€Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΊΠ΅Ρ€ отправляСт сигнал Π² свой ΠΊΠ°Π½Π°Π» (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ case <-ticker.C, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС пСчатая Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя.