溫馨提示×

Go中如何使用select遍歷多個通道

go
小億
97
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女