チャネルの配列を作成するにはどうすればよいですか?
例:次の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);
ステートメント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)
}
この場合、バッファリングされたチャネルを使用できると思います。
チャネルはバッファリングできます。バッファリングされたチャネルを初期化するための2番目の引数としてバッファ長を指定します。
ch := make(chan int, 5)
バッファがいっぱいの場合にのみ、バッファされたチャネルブロックに送信します。バッファが空のときにブロックを受け取ります。