Go time模块

time.NewTicker 实现计时器

package main

import (
    "time"
    "fmt"
)

func QueryDB(ch chan int) {
    time.Sleep(time.Second * 4)
    ch <- 100
}

func main() {
    ch := make(chan int)
    go QueryDB(ch)
    t := time.NewTicker(time.Second * 3)    // 定时器,每个Duration时间向Chan中放入一个时间戳

    // select chan 谁先可以从chan中获取数据,就case执行哪一个,否则就一直阻塞。
    select {
    case v:= <- ch:
        fmt.Println("result:", v)
    case v:= <- t.C:    // 从定时器取出时间戳
        fmt.Println("query timeout...", v)
    }
}

 

posted @ 2018-07-28 22:16  Vincen_shen  阅读(508)  评论(0编辑  收藏  举报