Как убедиться, что канал в системе уже закрыт?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Пример:

ch := make(chan int)
close(ch)

v, ok := <-ch
if !ok {
    fmt.Println("Канал закрыт")
} else {
    fmt.Println("Получено значение", v)
}

Здесь ok будет false, если канал закрыт. Это стандартный способ проверить состояние канала в Go.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее