1 回答
TA贡献1898条经验 获得超8个赞
无需使用 3rd 方库来实现。只需利用 goroutine 的优势并使用包time.Sleep()中可用的 API time,即可获得相同的结果。
例子:
go func() {
for true {
fmt.Println("Hello !!")
time.Sleep(1 * time.Second)
}
}()
游乐场:https://play.golang.org/p/IMV_IAt-VQX
使用代码 #1 的示例
根据 Siddhanta 的建议。这是一个使用 ticker 实现相同结果的示例(取自ticker 的 go 文档页面,根据您的要求进行了一些修改)。
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时间信息(执行的时间Hello !!)可以从channel中获取ticker.C。
case t := <-ticker.C:
fmt.Println(t)
游乐场:https://play.golang.org/p/TN2M-AMr39L
使用代码 #2 的示例
另一个简化的 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 关注
- 73 浏览
添加回答
举报