go select case 随机调用
package main import ( "fmt" "runtime" ) /* 1. go select是一种仅能用于channel发送和接收消息的语句,此语句运行期间是阻塞的;当 select中没有case语句的时候,会阻塞当前goroutine 2. select是go在语言层面提供的IO多路复用机制,专门用于检测多个channel是否准备完毕:可读可写 3. select语句中除default外,每个case操作一个channel,要么读要么写 4. select语句中除default外,各case的执行顺序是完全随机的 5. select中如果没有default语句,则会阻塞等待任一case 6. select语句中读操作要判断是否成功读取,关闭的channel也可以读取 */ func main() { runtime.GOMAXPROCS(1) int_chan := make(chan int, 1) string_chan := make(chan string, 1) int_chan <- 1 string_chan <- "hello" select { case value := <-int_chan: fmt.Println(value) case value := <-string_chan: fmt.Println(value) } //有的时候输出1,有的时候输出hello }
posted on 2022-10-17 11:26 running-fly 阅读(24) 评论(0) 编辑 收藏 举报