TL;DR
複数のゴルーチンの結果(入力チャネル)を、1 つの出力チャネルに集約するデザインパターン。分散して処理したデータを集計するときなどに役立つ。
仕組み
Go の公式ブログでは、複数の入力チャネルを 1 つのチャネルに多重化し、すべての入力が閉じたらそのチャネルを閉じる関数として説明されている。例として、入力チャネルごとにゴルーチンを立てて出力チャネルへ値を送り、WaitGroup で全部の送信が終わるのを待ってから出力チャネルを閉じる merge 関数が示されている。
関連
- Fan-Out pattern: 逆に、1 つのチャネルから複数のゴルーチンが読み込む
- Pipeline pattern
- Tee channel pattern