golang并发编程之select
select是go中的一个控制结构,类似于switch语句,用来处理异步IO
通道关闭后,会随机进入一个case,读出来的是默认值,通道没关闭,会进入default。通道没关闭并且没写default会死锁
package main
import (
"fmt"
"time"
)
var chanInt = make(chan int)
var chanStr = make(chan string)
func main() {
go func() {
chanInt <- 100
chanStr <- "krien"
// close(chanInt)
// close(chanStr)
}()
for {
select {
case r := <-chanInt:
fmt.Printf("r: %v\n", r)
case r := <-chanStr:
fmt.Printf("r: %v\n", r)
default:
fmt.Println("default...")
}
time.Sleep(time.Second)
}
}