Dev Study
Go コース

46. チャネル — goroutine 間で値をやりとりする

チャネル(channel)は goroutine 同士が値を安全に送受信するための通り道です。make(chan 型) で作り、ch <- v で値を送信し、v := <-ch で受信します。矢印はデータが流れる向きを表すと覚えると分かりやすいです。

バッファのない(デフォルトの)チャネルは、送信側と受信側がそろうまで互いに待ち合わせます。つまりチャネルへの送信は、誰かが受信するまでブロックします。この同期の性質のおかげで、WaitGroup を使わなくても受信が完了を保証してくれます。

下の例では goroutine が計算結果をチャネルに送り、main がそれを受信します。受信が完了を待つので、main が先に終わってしまうことはなく、毎回同じ結果が出ます。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Go
公式ドキュメントで詳しく ↗