package main import ( "fmt" "sync" ) var wg = new(sync.WaitGroup) // 只写 单向通道 func producer(ch chan<- int) { defer wg.Done() for i := 0; i < 100; 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(2) go producer(ch) go consumer(ch) wg.Wait() }