美文网首页
Golang中select的用法

Golang中select的用法

作者: DevilRoshan | 来源:发表于2020-03-10 01:04 被阅读0次

select介绍

从不同并发执行的协程中,获取数据可以用select来完成。select监听的多个通道,也可以用通道发送数值。
select的使用类似于switch语句,它有一系列case分支和一个默认的分支。每个case会对应一个通道的通信(接收或发送)过程。select会一直等待,直到某个case的通信操作完成时,就会执行case分支对应的语句。具体格式如下:

select{
    case <-ch1:
        ...
    case data := <-ch2:
        ...
    case ch3<-data:
        ...
    default:
        默认操作
}

select的基本用法

  1. 如果多个通道都阻塞了,会等待知道其中一个通道可以处理。
  2. 如果多个通道都可以处理,随机选取一个处理。
  3. 如果没有通道操作可以操作并且写了default语句,会执行:default(永远是可以运行的)
  4. 如果防止select堵塞,可以写default来确保发送不被堵塞,没有case的select就会一直堵塞。
  5. 当select做选择case和default操作时,case的优先级大于default。
  6. select语句实现了一种监听模式,通常在无限循环中使用,通过在某种情况下,通过break退出循环。

举个小例子来演示下select的使用:

func main() {
    ch := make(chan int, 1)
    for i := 0; i < 10; i++ {
        select {
        case x := <-ch:
            fmt.Println(x)
        case ch <- i:
        }
    }
}
0
2
4
6
8

相关文章

  • Golang中select的用法

    select介绍 从不同并发执行的协程中,获取数据可以用select来完成。select监听的多个通道,也可以用通...

  • golang reflect.Select 用法

  • select I/O多路复用

    select golang的并发模型和linux select类似golang提供了select关键字,实现I/O...

  • 【golang】select关键字用法

    select是go语言中常用的一个关键字,其用法也一直被用作面试题来考核应聘者。今天,结合代码来分析下select...

  • Go语言常用代码笔记(持续更新)

    ?循环读取Channel内容 ?golang 的 select 的功能和 select, poll, epoll ...

  • golang select

    使用场景 监控事件 读取事件 写入事件 } PS:注意select语句如果做监听使用的话,尽量嵌套在for循环中,...

  • 理解 Golang 中的 Select 语句

    Select 语句和 Swithc 语句的句式十分相似,但是 Select 中的 Case 必须是一个通信操作(一...

  • Go select

    通过select语句可以监听channel上的数据流动 Golang的select语句类似于UNIX的select...

  • select用法

    golang 的 select 的功能和select, poll, epoll相似, 就是监听 IO 操作,当 I...

  • Golang中defer用法

    Go语言中的defer语句会将其后面跟随的语句进行延迟处理。在defer归属的函数即将返回时,将延迟处理的语句按d...

网友评论

      本文标题:Golang中select的用法

      本文链接:https://www.haomeiwen.com/subject/ttcbdhtx.html