Чтобы закрыть канал в Go, используй функцию close() с каналом в качестве аргумента:
close(ch)
Есть два основных способа определить, что канал был закрыт:
Проверь второе возвращаемое значение при получении из канала. Если ok равно false, канал закрыт:
value, ok := <-ch
if !ok {
// Канал закрыт
}
Цикл for...range автоматически определяет, когда канал закрывается, и завершает итерацию:
for value := range ch {
// Обработать значение
}
// Цикл завершается, когда канал закрывается
Только отправитель канала должен закрывать его; если получатель вызовет close() на канале, из которого он получает данные, это вызовет panic.
Новый — ещё не проверен сообществом
Вы