code
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(400 * time.Millisecond)
done := make(chan bool)
go func() {
for {
select {
case tick := <- ticker.C :
fmt.Println("ticker a hole, ", tick)
case <-done:
fmt.Println("Channel Done")
return
}
}
} ()
time.Sleep(3 * time.Second)
ticker.Stop()
done <- true
fmt.Println("Tick done!")
}
Illustration
- ticker = time.NewTicker(打点间隔)
- tick := <- ticker.C 计数,返回记录的打点时间
- 好处,对比sleep; 1)ticker可以随时中断;ticker.Stop() 2)tick不会阻塞组,不会一直停在某处,程序正常执行下去