func main() {
cc := make([]chan interface{}, 10)
for i := 0; i < len(cc); i++ {
cc[i] = make(chan interface{})
}
dd := make([]chan int)
for i := 0; i < 1000; i++ {
dd = append(dd, make(chan int))
}
select {
// do we need a special <-[] ?
case i, c, v, ok := <-[]cc:
fmt.Printf("cc replied : channel index %d, channel %v, value %v, ok=%v", i, c, v, ok)
// or I dunno, not introducing a new op
case i, d, v, ok := <-dd:
fmt.Printf("dd sent something: channel index %d, channel %v, value %v, ok=%v", i, d, v, ok)
}
// or shorter, but I hope you get the drift
select {
case i, c, ok := <-[]cc:
fmt.Printf("cc replied : channel index %d, channel %v, value %v, ok=%v", i, c, <-c, ok)
case i, d, ok := <-dd:
fmt.Printf("dd sent something: channel index %d, channel %v, value %v, ok=%v", i, d, <-d, ok)
}
}