前提 go言語初心者が図を書きながらgoroutineやgo channelを理解する(Part1) の続きです。 まずはGo言語の並行処理の方針をEffective Goから引用します。 Do not communicate by sharing memory; instead, share memory by communicating" つまり、ワーカーの間でメッセージパッシングを行う方法が推奨されています。 確かに共有メモリを使う方法は、直感的な気もしますけど、競合とかデッドロックとか、色々と気にしないといけないことが多くて大変です。 メッセージパッシング方式がトレンドなのかもしれません。 go channelはgoroutineの間で値を受け渡しするための配列のようなものです。 channelはバッファを持たせることができて、channelへのデータ送信時にバッファがいっぱいだと