🟡 Средний · 2 очк. Паттерны проектирования
Как реализуется pipeline (конвейер) в Go?
A Цепочка этапов: каждый этап читает из входного канала и пишет в выходной
B Один канал с очередью задач и один воркер
C Последовательный вызов функций без каналов
D Паттерн из пакета pipeline стандартной библиотеки
Объяснение вопроса

Pipeline (конвейер) - цепочка этапов обработки, где каждый этап представлен горутинами, читающими из входного канала и пишущими в выходной. Выход одного этапа соединяется со входом следующего.

func gen(nums ...int) <-chan int {
    out := make(chan int)
    go func() {
        for _, n := range nums { out <- n }
        close(out)
    }()
    return out
}
func sq(in <-chan int) <-chan int {
    out := make(chan int)
    go func() {
        for n := range in { out <- n * n }
        close(out)
    }()
    return out
}
// pipeline: out := sq(gen(2, 3, 4))
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.