在 Go 语言中,select
是一种用于处理多个通道操作的控制结构。它可以用于在多个通道之间进行非阻塞的选择操作。
select
语句由一系列的 case
子句组成,每个 case
子句表示一个通道操作。select
语句会按照顺序依次检查每个 case
子句,并执行其中可执行的操作。
select
的作用主要有以下几个方面:
多路复用通道
select
可以同时监听多个通道上的操作,一旦某个通道可读或可写,就会执行相应的操作。这样可以避免使用阻塞的 channel
操作,提高程序的并发性能。
package main
import (
"fmt"
"time"
)
func main() {
ch1 := make(chan int)
ch2 := make(chan int)
go func() {
time.Sleep(2 * time.Second)
ch1