1 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
無需使用 3rd 方庫來實(shí)現(xiàn)。只需利用 goroutine 的優(yōu)勢并使用包time.Sleep()中可用的 API time,即可獲得相同的結(jié)果。
例子:
go func() {
for true {
fmt.Println("Hello !!")
time.Sleep(1 * time.Second)
}
}()
游樂場:https://play.golang.org/p/IMV_IAt-VQX
使用代碼 #1 的示例
根據(jù) Siddhanta 的建議。這是一個(gè)使用 ticker 實(shí)現(xiàn)相同結(jié)果的示例(取自ticker 的 go 文檔頁面,根據(jù)您的要求進(jìn)行了一些修改)。
done := make(chan bool)
ticker := time.NewTicker(1 * time.Second)
go func() {
for {
select {
case <-done:
ticker.Stop()
return
case <-ticker.C:
fmt.Println("Hello !!")
}
}
}()
// wait for 10 seconds
time.Sleep(10 *time.Second)
done <- true
ticker時(shí)間信息(執(zhí)行的時(shí)間Hello !!)可以從channel中獲取ticker.C。
case t := <-ticker.C:
fmt.Println(t)
游樂場:https://play.golang.org/p/TN2M-AMr39L
使用代碼 #2 的示例
另一個(gè)簡化的 ticker 示例,取自https://gobyexample.com/tickers
ticker := time.NewTicker(1 * time.Second)
go func() {
for range ticker.C {
fmt.Println("Hello !!")
}
}()
// wait for 10 seconds
time.Sleep(10 *time.Second)
ticker.Stop()
- 1 回答
- 0 關(guān)注
- 120 瀏覽
添加回答
舉報(bào)