← Go コース
48. チャネルの方向 — 送信専用と受信専用
関数の引数としてチャネルを渡すとき、その関数が送信だけ・受信だけを行うことを型で明示できます。chan<- int は送信専用、<-chan int は受信専用を表します。矢印の位置が chan の前後どちらにあるかで向きが決まります。
方向を限定しておくと、受信専用のチャネルに誤って送信するようなコードがコンパイル時にはじかれます。「この関数はチャネルから読むだけ」という意図がシグネチャに表れ、読みやすさと安全性が上がります。
下の例では produce が送信専用、consume が受信専用としてチャネルを受け取ります。produce が3つ送って閉じ、consume が range で受け切るので、合計は毎回安定します。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Go