Dev Study
Go コース

48. チャネルの方向 — 送信専用と受信専用

関数の引数としてチャネルを渡すとき、その関数が送信だけ・受信だけを行うことを型で明示できます。chan<- int は送信専用、<-chan int は受信専用を表します。矢印の位置が chan の前後どちらにあるかで向きが決まります。

方向を限定しておくと、受信専用のチャネルに誤って送信するようなコードがコンパイル時にはじかれます。「この関数はチャネルから読むだけ」という意図がシグネチャに表れ、読みやすさと安全性が上がります。

下の例では produce が送信専用、consume が受信専用としてチャネルを受け取ります。produce が3つ送って閉じ、consume が range で受け切るので、合計は毎回安定します。

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

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