Встречается на 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
интервью вопросы и ответы
