Go Tickers

Go的Ticker用于在固定时间间隔内执行某些工作。Ticker可以像定时器一样使用Stop()方法停止。

NewTicker()方法返回一个新的Ticker,它具有根据duration参数发送时间的通道。duration必须大于零,否则Ticker将引发恐慌。

Tick()是NewTicker的一个包装,它提供对滴答通道的访问。对于不想关闭Ticker的客户端,Tick()方法很有用。

Go Tickers示例

package main

import (
    "fmt"
    "time"
)

func main() {
    tickerValue := time.NewTicker(time.Millisecond * 100)
    go func() {
        for t := range tickerValue.C {
            fmt.Println("Tick at", t)
        }
    }()
    time.Sleep(time.Millisecond * 500)
    tickerValue.Stop()
    fmt.Println("Ticker stopped")
}

输出:

Tick at 2017-10-07 17:26:35.946279716 +0530 IST m=+0.101345812
Tick at 2017-10-07 17:26:36.046371811 +0530 IST m=+0.201437907
Tick at 2017-10-07 17:26:36.146417657 +0530 IST m=+0.301483753
Tick at 2017-10-07 17:26:36.24851386 +0530 IST m=+0.403579956
Tick at 2017-10-07 17:26:36.346476978 +0530 IST m=+0.501543074
Ticker stopped

Go Ticker示例2

package main

import (
    "log"
    "time"
)

func haveFun(s string) {
    log.Printf("\tA: Let's have fun: %v", s)
}

func doPolling() {
    for _ = range time.Tick(2 * time.Second) {
        haveFun("\t B : Okay!")
    }
}

func main() {
    go doPolling()
    select {} //The select statement lets a goroutine wait on multiple communication operations.
}

输出:

2017/10/07 18:15:15     A: Let's have fun:      B : Okay!
2017/10/07 18:15:17     A: Let's have fun:      B : Okay!
2017/10/07 18:15:19     A: Let's have fun:      B : Okay!
2017/10/07 18:15:21     A: Let's have fun:      B : Okay!
2017/10/07 18:15:23     A: Let's have fun:      B : Okay!
2017/10/07 18:15:25     A: Let's have fun:      B : Okay!

标签: Golang, Golang下载, Golang教程, Golang技术, Golang学习, Golang学习教程, Golang语言, Golang开发, Golang入门教程, Golang进阶教程, Golang高级教程, Golang面试题, Golang笔试题, Golang编程思想