Что произойдёт если читать из закрытого небуферизированного канала?

Получение нуля из интового канала при его закрытии означает, что канал пуст. В этом случае второе возвращаемое значение из операции <-ch будет false.

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

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

Получение нуля из интового канала при его закрытии означает, что канал пуст. В этом случае второе возвращаемое значение из операции <-ch будет false.

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

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

Условие

Что произойдёт если читать из закрытого небуферизированного канала?

Ответ

Получение нуля из интового канала при его закрытии означает, что канал пуст. В этом случае второе возвращаемое значение из операции <-ch будет false.

// Создаем канал
ch := make(chan int, 1)
ch <- 1 // Помещаем значение

// Читаем значение
val, ok := <-ch
// val = 1, ok = true

close(ch) // Закрываем канал

// Читаем из закрытого канала
val, ok = <-ch
// val = 0, ok = false - получаем ноль, потому что канал пуст после закрытия

Необходимо проверять второе возвращаемое значение (ok) при чтении из канала, чтобы определить, было ли значение получено до закрытия канала или это "нулевое" значение после закрытия.

// Пример обработки
value, open := <-channel
if !open {
	// Канал закрыт и пуст
	// Здесь можно выполнить действия, связанные с завершением работы
} else {
	// Значение успешно получено до закрытия
	// Обработка value
}

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

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

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

Подробнее