初学者关于无缓冲channel的疑问
func main() {
ch := make(chan int)
go func() {
for {
fmt.Println(<-ch)
time.Sleep(time.Second)
}
}()
ch <- 0
ch <- 1
fmt.Println("finished")
}
运行结果
0
finished
在数据没有被接收以前,send操作不是会被阻塞吗?为什么这里会跳过1直接finished?
因为时间太短没来得及输出就退出了,可以在打印finished前面加多点sleep时间