直接上代码不墨迹
package main
import "fmt"
func main() {
j := make(chan int, 5)
k := make(chan bool)
go func() { //启动并行
for {
//如果当前通道不满最大数量 等待 通道关闭调用。
s, v := <-j //如果通道没有值 异步阻塞 等待
if v {
fmt.Printf("get value is %d \n", s)
} else { //当通道关闭,并且没有数据的情况下调用
k <- true
fmt.Printf("get chan all \n")
}
}
}()
for i := 1; i < 3; i++ {
j <- i //开始向通道写数据
fmt.Printf("send j value is %d \n", i)
}
close(j) //关闭 j 通道
fmt.Println("set j all ")
<-k
}