您的位置:宽带测速网 > 编程知识 > Go中如何使用select遍历多个通道

Go中如何使用select遍历多个通道

2025-06-23 19:37来源:互联网 [ ]

在Go中,可以使用select语句来遍历多个通道。select语句可以同时监听多个通道的操作,并在其中任意一个通道准备就绪时执行相应的操作。

下面是一个使用select语句遍历多个通道的示例:

package mainimport ("fmt")func main() {// 创建两个通道ch1 := make(chan int)ch2 := make(chan int)// 向第一个通道发送数据go func() {for i := 0; i < 5; i++ {ch1 <- i}close(ch1)}()// 向第二个通道发送数据go func() {for i := 100; i < 105; i++ {ch2 <- i}close(ch2)}()// 遍历多个通道for {select {case v, ok := <-ch1:if !ok {ch1 = nil} else {fmt.Println("From ch1:", v)}case v, ok := <-ch2:if !ok {ch2 = nil} else {fmt.Println("From ch2:", v)}}// 判断所有通道是否已关闭if ch1 == nil && ch2 == nil {break}}}

在上面的示例中,我们创建了两个通道ch1ch2,并向每个通道发送一些数据。然后使用select语句遍历这两个通道,当其中任意一个通道准备就绪时,我们就从该通道中读取数据并打印出来,直到所有通道都关闭为止。

GO