不带缓存区的, 必需要goroutine等待着从队列中取,才能放入无缓存的队列中
package main
import (
"fmt"
"time"
)
func produce(c chan int) {
fmt.Println("produce start")
time.Sleep(time.Second * 2)
c <- 1000
fmt.Println("produce finished")
}
func consume(c chan int) {
data := <-c
fmt.Println(data)
}
func main() {
var c chan int
fmt.Printf("c=%v\n", c)
c = make(chan int) /// 不带缓存区的, 必需要goroutine等待着从队列中取,才能放入无缓存的队列中
go consume(c) // goroutine 无所谓先后
go produce(c)
//go consume(c) // 初始化队列如果把这个消费队列的goroutine注释, 无法把数据放入队列,5秒之后直接结束
// consume(c)
time.Sleep(time.Second * 5)
}