Что будет при чтении из закрытого канала?

В Go чтение из канала — это операция, которая блокирует вызывающую горутину до тех пор, пока в канале не появятся данные или канал не будет закрыт.

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

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

В Go чтение из канала — это операция, которая блокирует вызывающую горутину до тех пор, пока в канале не появятся данные или канал не будет закрыт.

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

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

В Go чтение из канала — это операция, которая блокирует вызывающую горутину до тех пор, пока в канале не появятся данные или канал не будет закрыт.

Если канал закрыт и в нем больше нет данных, чтение из него возвращает нулевое значение типа канала и флаг, указывающий, что канал закрыт. Это позволяет определить, что дальнейших данных не будет.

Пример:

ch := make(chan int)
close(ch)
value, ok := <-ch
if !ok {
    fmt.Println("Канал закрыт, данных нет")
}

Таким образом, при чтении из закрытого канала горутина не блокируется, а получает сигнал о закрытии, что позволяет корректно завершать работу с каналом.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку