Sobes.tech
Back to questions
Senior
3

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

Companies where asked
sber tech

Answer from AI

sobes.tech AI

Если попытаться прочитать из закрытого канала в Go, то операция чтения не заблокируется и вернёт нулевое значение типа канала вместе с флагом, указывающим, что канал закрыт.

Например:

ch := make(chan int)
close(ch)

v, ok := <-ch
fmt.Println(v, ok) // Выведет: 0 false

Значение ok == false означает, что канал закрыт и больше не будет отправлять значения. Это позволяет корректно обработать ситуацию закрытия канала при чтении.

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