16、Go 流程控制 - select 语句

作者: 温新

分类: 【Go基础】

阅读: 631

时间: 2023-08-21 16:03:08

hi,我是温新

在 Go 语言中,选择语除了有 switch 外,还有 selectselect 用于配合通道(channel)的读写操作,用于多个 channel 的并发读写操作。

两者之间的不同点在于,switch 语句是按照顺序从上到下依次执行,而 select 则是随机选择一个 case 来判断。

package main

import "fmt"

func main() {
    a := make(chan int, 1024)
    b := make(chan int, 1024)

    for i := 0; i < 10; i++ {
        fmt.Printf("第%d次 ", i)
        a <- 1
        b <- 1

        select {
            case <-a:
                fmt.Println("来自 a")
            case <-b:
                fmt.Println("来自 b")
        }
    }
}

其输出结果如下(每交执行都会得到不同的结果):

第1次 来自 b
第2次 来自 a
第3次 来自 a
第4次 来自 b
第5次 来自 b
第6次 来自 a
第7次 来自 b
第8次 来自 a
第9次 来自 a
请登录后再评论