Паттерн fan-out/fan-in используется для распараллеливания и координации задач (горутин). Особенно полезен, когда одну трудоемкую задача можно разделить на более мелкие подзадачи. Cостоит из двух стадий: 1. Fan-out: задача делится на несколько мелких подзадач, которые затем выполняются конкурентно. Каждую подзадачу можно назначить отдельной горутине для параллельного выполнения. 2. Fan-in: результаты всех одновременно выполняемых подзадач собираются и объединяются в единый результат. Реализация на Go Используем комбинацию горутин и каналов в Go. Каждая подзадача назначается горутине, а каналы передают данные между горутинами. Стадия fan-in ожидает завершения всех подзадач, координируя их с помощью примитивов синхронизации, таких как sync.WaitGroup, или используя канал с сигналом о завершении каждой подзадачи. Пример 1 "Тяжелую" задачу по вычислению факториала разбиваем на несколько подзадач. Для этого: 1. Создаем канал results в него будем записывать результаты вычислений. 2. Для кажд