Arrays 如何分配一组通道
如何创建通道阵列 例如:用大小为5的通道阵列替换以下五行:Arrays 如何分配一组通道,arrays,go,channel,Arrays,Go,Channel,如何创建通道阵列 例如:用大小为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); 语句var chans[5]chan int将分配一个大小为5的数组,但所有通道都将nil 一种方
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);
语句
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)
}
我认为在这种情况下可以使用缓冲通道 通道可以缓冲。提供缓冲区长度作为初始化缓冲通道的第二个参数:
ch := make(chan int, 5)
仅当缓冲区已满时才发送到缓冲通道块。当缓冲区为空时接收块
为什么您的解决方案比Chickencha简洁而惯用的
chans:=make([]chan int,5)
更好?如果通道没有显式地分配make(chan int)
,它们将默认为nil
。可以按照您的顺序填充数组,缓冲通道就不同了