企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、概念 * go语言提供了select关键字,可以监听channel上的数据流动 * 语法与switch类似,区别是select要求每个case语句里必须是一个IO操作 ``` select { case <-chan1: // 如果chan1成功读到数据,则进行该case处理语句 case chan2 <- 1: // 如果成功向chan2写入数据,则进行该case处理语句 default: // 如果上面都没有成功,则进入default处理流程 } ``` ## 二、实例 ~~~ package main import ( "fmt" ) //select是监控channel数据流动的 func main() { //创建通道 int_chan := make(chan int, 1) string_chan := make(chan string, 1) //开2个子协程 go func() { //time.Sleep(2 * time.Second) int_chan <- 1 }() go func() { string_chan <- "hello" }() //select里若匹配成功多个,则随机取一个执行 select { case value := <-int_chan: fmt.Println("intValue:", value) case value := <-string_chan: fmt.Println("strValue:", value) } fmt.Println("程序结束") } ~~~