chanchan
package main

import (
	"fmt"
	"time"
)

func producer(out chan<- int) {
	for i := 0; i < 10; i++ {
		out <- i
	}
	close(out)
}

func consumer(in <-chan int, id int) {
	for num := range in {
		fmt.Printf("consumer %d received %d\n", id, num)
		time.Sleep(time.Second)
	}
}

func main() {
	// 创建一个通道,用于生产者向消费者发送数据
	data := make(chan int)

	// 启动一个生产者
	go producer(data)

	// 启动多个消费者
	for i := 0; i < 3; i++ {
		go consumer(data, i)
	}

	// 阻塞主 goroutine,避免程序退出
	select {}
}
produceroutconsumerinmaindatadatadatamainselect{}
closeclose