Вопрос: Как написать простой generic pipeline с каналами (map/filter) ?

Go Junior Без компании
Вопрос: Как написать простой generic pipeline с каналами (map/filter) ?
Ответы
Пример: генератор → map → filter → consumer. ```go package main import "fmt" func Gen(nums ...int) <-chan int { out := make(chan int) go func() { defer close(out) for _, n := range nums { out <- n } }() return out } func Map[T any, R any](in <-chan T, f func(T) R) <-chan R { out := make(chan R) go func() { defer close(out) for v := range in { out <- f(v) } }() return out } func Filter[T any](in <-chan T, pred func(T) bool) <-chan T { out := make(chan T) go func() { defer close(out) for v := range in { if pred(v) { out <- v } } }() return out } func main() { in := Gen(1, 2, 3, 4, 5) mapped := Map(in, func(x int) int { return x * x }) filtered := Filter(mapped, func(x int) bool { return x%2 == 0 }) for v := range filtered { fmt.Println(v) } } ```