Sobes.tech
Назад к вопросам
Junior — Middle
77

Можно ли определить, что канал для отправки данных больше не принимает сообщения?

Компании, где спрашивали
МТСМТС

Ответ от нейросети

sobes.tech AI

В Go можно определить, что канал больше не принимает сообщения, проверяя, закрыт ли он. При чтении из закрытого канала операция чтения возвращает нулевое значение и второй параметр ok равен false.

Пример:

ch := make(chan int)
close(ch) // Закрываем канал

v, ok := <-ch
if !ok {
    fmt.Println("Канал закрыт, больше не принимает сообщения")
}

Важно: отправлять в закрытый канал нельзя — это приведёт к панике. Поэтому обычно канал закрывает отправитель, а получатели проверяют, закрыт ли канал, чтобы понять, что сообщений больше не будет.