Реализуйте функцию or, которая принимает произвольное количество сигнальных
каналов типа <-chan interface{} и возвращает один канал.
Как только любой из входящих каналов закрывается или присылает значение,
возвращаемый канал должен немедленно закрыться.
func or(channels ...<-chan interface{}) <-chan interface{} {
// Ваша реализация
}
На что смотрит интервьюер:
- Нет утечки горутин: после срабатывания все вспомогательные горутины завершаются.
- Корректная обработка краёв: 0 каналов →
nil, 1 канал → он сам.
- Решение масштабируется на произвольное число каналов (классика — рекурсивный
select с «деревом» каналов).