Как выделить массив каналов в go

Извините за вопрос о синтаксисе новичков.

Как создать массив каналов в go?

  var c0 chan int = make(chan int);
  var c1 chan int = make(chan int);
  var c2 chan int = make(chan int);
  var c3 chan int = make(chan int);
  var c4 chan int = make(chan int);

То есть, заменяя вышеприведенные пять строк в одном массиве каналов размером 5?

Большое спасибо.

Ответы

Ответ 1

Оператор var chans [5]chan int будет выделять массив размером 5, но все каналы будут nil.

Один из способов - использовать литеральный фрагмент:

var chans = []chan int {
   make(chan int),
   make(chan int),
   make(chan int),
   make(chan int),
   make(chan int),
}

Если вы не хотите повторять себя, вам придется перебирать его и инициализировать каждый элемент:

var chans [5]chan int
for i := range chans {
   chans[i] = make(chan int)
}