如何分配一个通道数组

era*_*ran 22 arrays channel go

如何创建一个频道数组

例如:用一个通道数组替换以下五行,大小为5:

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);
Run Code Online (Sandbox Code Playgroud)

Mar*_*rot 53

该语句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),
}
Run Code Online (Sandbox Code Playgroud)

如果你不想重复自己,你将不得不迭代它并初始化每个元素:

var chans [5]chan int
for i := range chans {
   chans[i] = make(chan int)
}
Run Code Online (Sandbox Code Playgroud)

  • 如果未使用`make(chan int)`显式分配通道,则它们将默认为`nil`. (14认同)