Golang笔记

Golang 定时循环的实现

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!
Captcha image
Relative Articles