package main import ( "fmt" "sync" ) var wg = new(sync.WaitGroup) // 只写 单向通道 func producer(ch chan<- int) { defer wg.Done() for i := 0; i < 200; i++ { ch <- i } close(ch) } // 只读 单向通道 func consumer(ch <-chan int) { defer wg.Done() for i := range ch { fmt.Printf("%d\n", i) } } func main() { // 可读可写 双向通道 ch := make(chan int, 10) wg.Add(1) go producer(ch) wg.Add(10) for i := 0; i < 10; i++ { go consumer(ch) } wg.Wait() }