ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
请完成routine和channel协同工作的案例,具体要求 1. 开启一个writeData协程,向管道intChan中写入50个整数 2. 开启一个readData协程,从管道intChan中读取writeData写入的数据 3. 注意:writeData和readData操作的是同一个管道 4. 主线程需要等待writeData和readData协程都完成工作才能退出 ![](https://img.kancloud.cn/2c/f5/2cf5a23a1624f251efff796628a4c800_1240x524.png) ``` package main import ( "fmt" ) func writeData(intChan chan int) { for i := 0; i < 10000; i++ {         intChan <- i         fmt.Printf("writeData value=%v\n", i) //time.Sleep(time.Second)//太快如果看不到效果,可以加sleep } close(intChan) } func readData(intChan chan int, exitChan chan bool) { for { v, ok := <-intChan if !ok { break         }         fmt.Printf("readData value=%v\n", v) } exitChan <- true close(exitChan) } func main() { intChan := make(chan int, 10000)//即使容量比较小,只要检测到有读取的协程,就不会出现死锁 exitChan := make(chan bool, 1) go writeData(intChan) go readData(intChan, exitChan)//如果没有readData并且intchan容量不足时,会出现阻塞 for { _, ok := <-exitChan if !ok { break         }     } } ```