News for hackers. Stuff that matters.
Re:Channels, Concurrency, Cores: A New Concurrent ML Impleme... by cdoxsey on Monday October 15, 2018 @03:38PM (#18222970)
Here's one way:

    func fanin(out chan<- int, ins ...chan int) {
        switch len(ins) {
        case 0:
        case 1:
            for msg := range ins[0] {
                out <- msg
            }
        case 2:
            for {
                var msg int
                select {
                case msg = <-ins[0]:
                case msg = <-ins[1]:
                }
                out <- msg
            }
        default:
            go fanin(out, ins[:len(ins)/2]...)
            go fanin(out, ins[len(ins)/2:]...)
        }
    }
https://play.golang.org/p/9KNkheXHUBr

You can also use reflect: https://golang.org/pkg/reflect/#Select

There are no comments on this comment yet.