tl;dr

海外記事を読みます

Go: チャンネルは不十分―なぜ pipelining がそれほど簡単ではないのか

Channels Are Not Enough or Why Pipelining Is Not That Easy

  • Go のチャンネルはプリミティブであり、低レイヤを構成する部品である。
  • なので、よくある並行処理はチャンネルを利用した(チャンネルの API などではなく)コード片になる。(「パターン」が存在する: Advanced Go Concurrency PatternsGo Concurrency Patterns: Pipelines and cancellation
  • これらのパターンは抽象化・ライブラリ化できてもよさそうなものけれど、Go にはジェネリクスがないので毎回同じようなコードを書くことになり、つらい。

たしかになーって思ったけど、その後に Go Is a Shop-built Jig - CocoaphonyGo はショップ製の治具(ジグ)だ - tl;dr)を読んで、なんでも綺麗に抽象化しようとする姿勢が Go のやり方に合ってないんじゃないかと思った。