MST

星途 面试题库

面试题:Go中select多路复用基础应用

请用Go语言的select语句实现一个简单的场景:有两个通道`ch1`和`ch2`,分别发送整数类型数据。编写代码通过select多路复用,当任一通道有数据时,接收并打印该数据,持续进行直到其中一个通道关闭。
32.4万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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 := 10; i < 15; i++ {
            ch2 <- i
        }
        close(ch2)
    }()

    for {
        select {
        case data, ok := <-ch1:
            if!ok {
                fmt.Println("ch1 closed")
                return
            }
            fmt.Printf("Received from ch1: %d\n", data)
        case data, ok := <-ch2:
            if!ok {
                fmt.Println("ch2 closed")
                return
            }
            fmt.Printf("Received from ch2: %d\n", data)
        }
    }
}