package main import ( "fmt" "time" ) func main() { ch := make(chan int) go func() { for i := 1; i <= 5; i++ { time.Sleep(500 * time.Millisecond) ch <- i } close(ch) }() for { select { case v, ok := <-ch: if !ok { fmt.Println("channel 已关闭,退出循环") return } fmt.Println("收到:", v) default: // 没有数据可读时,做点“其他事” fmt.Println("没有新数据,先忙点别的...") time.Sleep(200 * time.Millisecond) } } }