我如何在 func 中声明一段 chan(通道)

我正在尝试编写这样的函数,但我无法声明通道切片


func fanIn(set <-[]chan string) <-chan string {

    c := make(chan string)


    for i := range set {

        go func() { for {c <-set[i]} }()

    }

    return c

}

在 Go 中是否可以将一段通道作为参数?


调用示例


set := [2]chan string{mylib.Boring("Joe"), mylib.Boring("Ann")}

c := fanIn(set)

如果我能做到


func fanIn(input1, input2 <-chan string) <-chan string {

我认为应该可以有“<-chan string”的切片或数组


更新:


func fanIn(set []<-chan string) <-chan string {

    c := make(chan string)


    for i := range set {

        go func() {

            for {

                x := <-set[i]

                c <- x

            }

        }()

    }


    return c

}


func main() {

    set := []<-chan string{mylib.Boring("Joe"), mylib.Boring("Ann"), mylib.Boring("Max")}

    c := fanIn(set)

    for i := 0; i < 10; i++ {

        fmt.Println(<-c)

    }

    fmt.Println("You're boring: I'm leaving.")

}


温温酱
浏览 180回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go