MST
星途 面试题库

面试题:Go中select语句在并发优化中的基础应用

请阐述Go语言中select语句如何在并发场景下实现多个通道(channel)之间的高效切换。假设你有两个通道 `ch1` 和 `ch2`,分别接收不同类型的数据,使用select语句编写代码实现当任一通道有数据时,将数据打印出来。
16.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func main() {
    ch1 := make(chan int)
    ch2 := make(chan string)

    go func() {
        ch1 <- 10
    }()

    go func() {
        ch2 <- "hello"
    }()

    select {
    case data := <-ch1:
        fmt.Printf("Received from ch1: %d\n", data)
    case data := <-ch2:
        fmt.Printf("Received from ch2: %s\n", data)
    }
}

在Go语言中,select 语句用于监听多个通道的操作(发送或接收)。当其中任意一个通道可以进行操作时,对应的 case 分支将被执行。如果多个通道同时准备好,Go会随机选择一个 case 执行,从而实现高效的通道切换。在上述代码中,select 语句监听 ch1ch2 两个通道,哪个通道先接收到数据,就打印该通道的数据。