在Go语言中,select
语句用于同时监听多个通道操作。虽然select
主要用于监听通道的读事件,但实际上它也可以监听写事件。当多个case
都准备好时,select
会随机选择一个执行。
下面是一个简单的示例演示了如何使用select
监听写事件:
package main
import (
"fmt"
)
func main() {
ch := make(chan int)
doneCh := make(chan bool)
go func() {
for i := 0; i < 5; i++ {
select {
case ch <- i:
fmt.Printf("写入 %d\n", i)
case <-doneCh:
fmt.Println("结束写入")
close(ch)
return
}
}
}()
for val := range ch {
fmt.Printf("读取 %d\n", val)
}
doneCh <- true // 发送结束信号
}
在这个示例中,我们创建了两个通道 ch
和 doneCh
,通过使用 select
监听 ch <- i
写事件和 <-doneCh
读事件。当发送结束信号到 doneCh
后,程序会关闭通道并退出。
希望这能解决你的疑问。如果还有其他问题,请随时提出。
内容由零声教学AI助手提供,问题来源于学员提问