Go言語:Channelsのselect
select の話
- selectステートメントで、複数のChannelsを条件分岐できる。
- 受信、送信、どちらも可能。
- Channelsの送信があるのに、受け取りを行ってなかったら、selectをしていない場合と同じで例外になるので注意。
- 複数条件に一致する場合は、ランダムに選択される。
- selectの中のいずれにも該当しない場合の条件を
default
で指定可能。- Channelsに限定した話ではない。注意。
試してみた
実行結果
start? 1 0 0 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 16 987 17 1597 18 2584 19 4181 quit 0 0 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 16 987 17 1597 18 2584 19 4181 quit
コード中のコメントアウトしているdefault
内の行を解くと、演算実行の間(繰り返されている間)に、何度もdefault
が呼び出されていることがわかる。