面试题答案
一键面试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
语句监听 ch1
和 ch2
两个通道,哪个通道先接收到数据,就打印该通道的数据。