При чтении из канала можно использовать форму value, ok := <-ch для проверки, закрыт ли канал — если канал закрыт, ok будет false, а value примет нулевое значение типа, что позволяет безопасно обрабатывать завершение работы с каналом.
ch := make(chan int)
// Пример использования:
for {
value, ok := <-ch
if !ok {
fmt.Println("Канал закрыт")
break
}
fmt.Println("Получено значение:", value)
}
// Альтернативный способ с range:
for value := range ch {
fmt.Println("Получено значение:", value)
}
// Когда канал закроют, цикл range автоматически завершится