当需要从多个管道中读取数据时,如果没有数据,可能会产生阻塞
代码语言:javascript复制for{
// 尝试从ch1接收值
data := <-ch1
// 尝试从ch2接收值
data := <-ch2
}
go语言内置了select关键字,可以同时响应多个管道的操作,当某个case完成后自动退出select,当所有case执行失败后执行select语句。
代码语言:javascript复制select {
case <-chan1:
// 如果chan1成功读到数据,则进行该case处理语句
case chan2 <- 1:
// 如果成功向chan2写入数据,则进行该case处理语句
default:
// 如果上面都没有成功,则进入default处理流程
}