Go/iter でPipelineパターンやってみた

Goのv1.23で追加されたiterパッケージでPipelineパターンをやってみる。 Pipelineパターンはiterと併用できる? Pipelineパターンをiterと併用するメリットは? Pipelineパターンやiterはどこで使うべき? 要件 アプリケーションのバックエンド開発を想定。 商品を単価と個数をrepositoryから取り出して、単価x個数の合計金額をserviceで計算、最後handlerで計算結果を確認という流れ。 実装 iterパターンの実装を確認。 type Repository struct { items [][2]int // [][2]int{price, num} } func (r Repository) Generate() iter.Seq2[int, [2]int] { // r.itemsはコンストラクタによってlenは100 return slices.All(r.items) } type Service struct { r Repository } func (s Service) Iter() iter.Seq[int] { return func(yield func(int) bool) { for _, item := range s.r.Generate() { p := s.sumPrice(item[0], item[1]) _ = yield(p) } } } type Router struct { s Service } func (r Router) HandleWithIter() { var count int for sum := range r. [続きを読む]