web-dev-qa-db-ja.com

チャネルの配列を割り当てる方法

チャネルの配列を作成するにはどうすればよいですか?

例:次の5行を、サイズ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);
26
eran

ステートメントvar chans [5]chan intはサイズ5の配列を割り当てますが、すべてのチャネルはnilになります。

1つの方法は、スライスリテラルを使用することです。

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)
}
51
Markus Jarderot

この場合、バッファリングされたチャネルを使用できると思います。

チャネルはバッファリングできます。バッファリングされたチャネルを初期化するための2番目の引数としてバッファ長を指定します。

ch := make(chan int, 5)

バッファがいっぱいの場合にのみ、バッファされたチャネルブロックに送信します。バッファが空のときにブロックを受け取ります。

https://tour.golang.org/concurrency/

0
An Van Nguyen