[GO]使用select实现超时

package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan int)
    quit := make(chan bool)

    go func() {
        for true {
            select {
            case num := <- ch:
                fmt.Println("num = ", num)
            case <-time.After(3*time.Second):
                quit<-true
            }
        }
    }()
    for i:=0; i<9; i++ {
        ch<-i
        time.Sleep(time.Second)
    }
    <-quit
    fmt.Println("程序结束")
}

打印的结果

num =  0
num =  1
num =  2
num =  3
num =  4
num =  5
num =  6
num =  7
num =  8
程序结束
原文地址:https://www.cnblogs.com/baylorqu/p/9679442.html