I am trying to write such a function, but I cannot declare a channel fragment
func fanIn(set <-[]chan string) <-chan string { c := make(chan string) for i := range set { go func() { for {c <-set[i]} }() } return c }
Is it possible in Go to have a slice of channels as an argument?
call example
set := [2]chan string{mylib.Boring("Joe"), mylib.Boring("Ann")} c := fanIn(set)
if i can do it
func fanIn(input1, input2 <-chan string) <-chan string {
I suppose it should be possible to have a slice or array "<-chan string"
update:
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.") }
source share