go管道解决没有及时关闭出现阻塞的情况

package  main

import (
    "fmt"
    "time"
)

func main(){
    //1.定义一个管道,10个数据int
    intChan :=make(chan int,10);
    for i:=0;i<10;i++{
        intChan <- i;
    }
    //说明如果管道没有关闭,那么就会出现死锁 deadlock,所以一般情况下
    //大家都会关闭管道,比如close(mychan),但是有时候我们不知道什么时候关闭
    //那么久要使用select来解决
    for {
        select {
            case v:= <- intChan:
                fmt.Printf("output data is %v
",v);
                time.Sleep(time.Second*1);
        default:
            fmt.Printf("管道里面没有数据了
");
            return;
        }
    }
}

原文地址:https://www.cnblogs.com/zh718594493/p/14170378.html