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)
    }
}

猜你喜欢

转载自www.cnblogs.com/vincenshen/p/9383675.html
今日推荐