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