温馨提示×

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

go
小亿
96
2024-04-02 20:59:05
栏目: 编程语言

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

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

package main import ( "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语句遍历这两个通道,当其中任意一个通道准备就绪时,我们就从该通道中读取数据并打印出来,直到所有通道都关闭为止。

0