Golang 定时循环的实现
🕟 Sat, 09 Sep 2017 by GolangNote
Golang 定时循环的实现
例子1
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello, 世界")
loopWorker()
}
func loopWorker() {
i := 0
ticker := time.NewTicker(6 * time.Second) // --- A
defer ticker.Stop()
for {
select {
case <-ticker.C:
// 执行我们想要的操作
i++
doxx(i)
}
}
}
func doxx(i int) {
time.Sleep(7 * time.Second) // --- B
fmt.Println("aaa", i, time.Now().Unix())
}
// 时间A和B 以时间长的为间隔周期
例子2
package main
import (
"fmt"
"time"
)
func main() {
tick := time.Tick(1e8)
tick2 := time.Tick(2e8)
boom := time.After(5e8)
for {
select {
case <-tick:
fmt.Println("tick.")
case <-tick2:
fmt.Println("tick2.")
case <-boom:
fmt.Println("BOOM!")
// return
default:
fmt.Println(" .")
time.Sleep(5e7)
}
}
}
例子3
package main
import (
"fmt"
"time"
)
func main() {
for {
timer := time.NewTimer(5 * time.Second) // -- A
<-timer.C
time.Sleep(6 * time.Second) // -- B
fmt.Println("看看时间", time.Now().Format("2006-01-02 15:04:05"))
}
}
// 循环时间是A+B
例子4,最暴力的方法
package main
import (
"fmt"
"time"
)
func main() {
for {
time.Sleep(6 * time.Second)
fmt.Println("看看时间", time.Now().Format("2006-01-02 15:04:05"))
}
}
本文网址: https://golangnote.com/topic/190.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Relative Articles
Recent Go Articles
- Golang 把cookie 字符串解析为cookie 结构
- Golang 计算字符串中包含某个或某些字符集的个数
- 使用Golang 对文件增删写读操作备忘
- Go Modules 使用备忘
- 使用Golang 简单删除图片exif 信息
- 谷歌翻译的 golang 库推荐
- Go 1.13.2 与1.13.3 紧急更新
- golang 人脸检测识别库
- Go build 错误 “stackcheck redeclared in this block previous declaration”的解决方法
- Golang phantomjs 动态代理实现
- Golang chrome debug protocol 库推荐
- Golang 随机打乱数组/Slice
- Golang sync.WaitGroup 的 Wait 超时处理
- Golang实现简单的Socks5代理
- Golang 用snappy + Base64 简单压缩加密进行网络传输
- Golang http IPv4/IPv6 服务
- golang 全角半角相互转换
- 在自己的网站部署TLS 1.3
- Golang 实现/打印菜单树
- Golang telegram 机器人小试
Top Go Articles
- 使用Golang 简单删除图片exif 信息
- 谷歌翻译的 golang 库推荐
- Go 1.13.2 与1.13.3 紧急更新
- golang 人脸检测识别库
- Go build 错误 “stackcheck redeclared in this block previous declaration”的解决方法
- Golang phantomjs 动态代理实现
- Golang chrome debug protocol 库推荐
- Golang 随机打乱数组/Slice
- Golang sync.WaitGroup 的 Wait 超时处理
- Golang实现简单的Socks5代理
- Golang 用snappy + Base64 简单压缩加密进行网络传输
- Golang http IPv4/IPv6 服务
- golang 全角半角相互转换
- 在自己的网站部署TLS 1.3
- Golang 实现/打印菜单树
- Golang telegram 机器人小试
- Golang get 请求忽略数字证书进行校验
- Golang字符串相等比较的性能
- an error broken: unknown escape sequence: d
- golang 正确获取绝对路径的方法