done:=make(chan struct{})
c:=make(chan int)
go func() {
    defer close(done)
    for{
        s,ok:=<-c
        if !ok{
            //close(c)
            return
        }
        println(s)
    }
}()
for i:=0;i<1 ;i++  {
    println("put")
    c<-i
}
println("main....")
//close(c)
<-done

clipboard.png
当for循环到max+1的时候会出现阻塞问题,为啥B区域的close可以关闭通道,而在A区域无法关闭

clipboard.png