Go 在channel写入时直接返回

2020-06-27  本文已影响0人  霡霂976447044

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代码可以看到效果

上一篇 下一篇

猜你喜欢

热点阅读