面试题答案
一键面试Go语言中select语句基本语法
select
语句用于监听多个通道的操作(接收或发送数据),其基本语法如下:
select {
case <-chan1:
// 当从chan1接收到数据时执行的代码
case chan2 <- value:
// 当成功向chan2发送value时执行的代码
default:
// 当以上所有case都未准备好时执行的代码(可选)
}
示例
package main
import (
"fmt"
)
func main() {
ch1 := make(chan int)
ch2 := make(chan int)
go func() {
ch1 <- 10
}()
go func() {
ch2 <- 20
}()
select {
case data := <-ch1:
fmt.Printf("从ch1接收到数据: %d\n", data)
case data := <-ch2:
fmt.Printf("从ch2接收到数据: %d\n", data)
}
}
在上述示例中,创建了两个通道ch1
和ch2
,并通过两个匿名goroutine分别向通道发送数据。select
语句监听这两个通道,当任一通道接收到数据时,打印相应的信息。如果多个通道同时准备好,select
会随机选择其中一个case
执行。