из канала?
например я создаю воркера, который читает из канала данные, я же могу и с помощью селект и ренжем прочитать, так в чем разница?( не считая, что селект дает возможность читать одновременно из нескольких каналов?)
также еще вопрос, как можно по "красивому" закрыть воркера, который в горутине, чтоб без утечек и дедлоков? например если у меня в воркере будет range на канал, а потом я вызову на этот канал close - цикл закроется и горутина завершится, а как в таком случа быть в оператором select?
селект это по сути switch, где можно управлять различными бранчами, ждать или не ждать из каналов итд. В форлуп у вас просто идёт блокирующее чтение из канала
ваш канал в селект тоже вернёт значение при закрытии канала
range это сахар для выборки данных из канала и всего. Если вам просто нужно с одного канала читать до его закрытия, то рейндж ваш выбор. Если более сложное поведение, то селект.
Обсуждают сегодня