Встречается на 33% собеседований по Go

Что будет, если читать закрытый канал

Чтение из закрытого канала в Go не вызывает паники. Вместо этого операция немедленно возвращает нулевое значение типа канала (например, 0 для int, "" для string и т.д.).

Пример:

go
ch := make(chan int)
close(ch)
val := <-ch
fmt.Println(val) // Выведет: 0

При использовании range по закрытому каналу цикл завершится корректно:

go
for v := range ch {
    // Этот блок не выполнится, если канал закрыт
}

Проверить, закрыт ли канал, можно с помощью второго возвращаемого значения:

go
val, ok := <-ch
if !ok {
    // Канал закрыт
}
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы