使用场景
select主要用来监控多个channel,channel的数据读取,写入,关闭等事件,采用的是轮训算法
监控事件
channel读取事件
channel的写入事件
channel关闭事件
其他default
读取事件
func addNumberToChan(chanName chan int) {
for {
chanName <- 1
time.Sleep(1 * time.Second)
}
}
// select 监控channel的push事件
func testReadChannel() {
var chan1 = make(chan int, 10)
var chan2 = make(chan int, 10)
go addNumberToChan(chan1)
go addNumberToChan(chan2)
for {
select {
case e := <- chan1 :
fmt.Printf("Get element from chan1: %d\n", e)
case e := <- chan2 :
fmt.Printf("Get element from chan2: %d\n", e)
default:
fmt.Printf("No element in chan1 and chan2.\n")
time.Sleep(1 * time.Second)
}
}
}
有疑问加站长微信联系(非本文作者)