Golang-Channel03(协程+管道结合)

    科技2025-09-02  13

    要求

    1.writeData协程向管道intChan写入50个整数 2.开启一个readData协程,从管道intChan中读取writeData的数据 3.主线程要求等两个协程完成后退出

    代码示例

    package main import( "fmt" ) func writeData(intChan chan int){ for i:= 0; i <= 1000; i++{ intChan <- i fmt.Println("写入的数据",i) } close(intChan) } func readData(intChan chan int, exitChan chan bool){ for { v, ok := <- intChan if !ok{ break } fmt.Println("读到的数据",v) } exitChan <- true close(exitChan) } func main(){ //创建两个管道 intChan := make(chan int, 50) exitChan := make(chan bool, 1) //问题 //主线程不加操作直接运行 //会不等协程运行结束直接退出 go writeData(intChan) go readData(intChan, exitChan) //加一个判断,解决上面的问题 for { v, ok := <-exitChan if v==true && ok{ break } } }
    Processed: 0.009, SQL: 8