Назад к вопросам
Senior
2
Что произойдет, если попробовать прочитать из закрытого канала?
Компании, где спрашивали
sber tech
Ответ от нейросети
sobes.tech AI
Если попытаться прочитать из закрытого канала в Go, то операция чтения не заблокируется и вернёт нулевое значение типа канала вместе с флагом, указывающим, что канал закрыт.
Например:
ch := make(chan int)
close(ch)
v, ok := <-ch
fmt.Println(v, ok) // Выведет: 0 false
Значение ok == false означает, что канал закрыт и больше не будет отправлять значения. Это позволяет корректно обработать ситуацию закрытия канала при чтении.
Если читать из закрытого канала без проверки ok, можно получить нулевые значения, что иногда может привести к логическим ошибкам, если не учитывать закрытие канала.