本文主要是介绍管道(channel)select,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
select功能:解决多个管道的选择问题,也可以叫多路复用,可以从多个管道中随机公平的选择一个来执行
case后面必须进行的是io操作,不能是等值,随机去选择一个io操作
default防止select被阻塞,加入default
只要有其中一个满足条件,就执行相应的逻辑,一般会写个for,里面加入select进行监听多个channel,如果有数据就执行对应的逻辑操作
package mainimport ("fmt""time"
)func main() {//定义一个int管道:intChan := make(chan int, 1)go func() {time.Sleep(time.Second * 5)intChan <- 10}()//定义一个string管道stringChan := make(chan string, 1)go func() {time.Sleep(time.Second * 10)stringChan <- "golang"}()//fmt.Println(<-intChan) //本身取数据就是阻塞的select {case v := <-intChan:fmt.Println("intChan:", v)case v := <-stringChan:fmt.Println("stringChan:", v)default:fmt.Println("防止select被阻塞")}
}
这篇关于管道(channel)select的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!