select 不仅可以用于检测channel的数据写状态,还能监听读状态,利用这个特性,我们可以防止在没有go协程读channel时一直阻塞
package main
import (
"fmt"
"time"
)
func ggg(aa chan int) {
fmt.Println("aa", <-aa)
}
func main() {
a := make(chan int)
go ggg(a)
// time.Sleep(time.Second)
// a <- 10
select {
case a <- 10:
{
fmt.Println("ok")
}
default:
{
fmt.Println("default")
}
}
time.Sleep(time.Second)
fmt.Println("sdsds")
}
注释time.Sleep代码可以看到效果
网友评论