不使用三方库
协程Sleep方式
1 2 3 4 5 6
| go func() { for true { fmt.Println("Hello !!") time.Sleep(1 * time.Second) } }()
|
使用ticker方式1
1 2 3 4 5 6 7 8 9 10
| ticker := time.NewTicker(1 * time.Second) go func() { for range ticker.C { fmt.Println("Hello !!") } }()
time.Sleep(10 *time.Second) ticker.Stop()
|
使用ticker方式2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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 !!") } } }()
time.Sleep(10 *time.Second) done <- true
|
参考
https://stackoverflow.com/questions/53057237/how-to-schedule-a-task-at-go-periodically