golang定時器和超時的使用
阿新 • • 發佈:2019-02-01
直接程式碼
func main() { var a chan string a =make(chan string) go sendDataTo(a) go timing() getAchan(10*time.Second,a) } func sendDataTo(a chan string) { for { a <- "我是a通道的資料" time.Sleep(1e9 *3) } } //在一定時間內接收不到a的資料則超時 func getAchan(timeout time.Duration, a chan string) { var after <-chan time.Time loop: after = time.After(timeout) for{ fmt.Println("等待a中的資料,10秒後沒有資料則超時") select { case x :=<- a: fmt.Println(x) goto loop case <-after: fmt.Println("timeout.") return } } } func timing() { //定時器,10秒鐘執行一次 ticker := time.NewTicker(10 * time.Second) for { time := <-ticker.C fmt.Println("定時器====>",time.String()) } }