go管道,在不同地方从空管道取值会有不一样的结果
1. 运行环境
go1.19
2. 问题描述?
初学者刚学习管道遇到的问题
下面是创建一个管道,在main函数中直接取值会报错
但是如果我把取值操作放到函数中,起一个协程执行的话就会阻塞等待,不报错
// read data
func readData(intChan chan int, isOver *bool) {
for {
v, ok := <-intChan
if ok == false {
break
}
fmt.Printf("readData %v\n", v)
}
*isOver = true
}
func main() {
isOver := false
go readData(intChan, &isOver)
}
不太理解为什么在协程下go不报错,在主线程go报错
推荐文章: