Назад к вопросам
Senior
4
Что происходит при чтении и записи в закрытый канал?
Компании, где спрашивали
I-teco
Ответ от нейросети
sobes.tech AI
В Go при работе с каналами:
-
Чтение из закрытого канала: Если канал закрыт и в нём нет данных, операция чтения возвращает нулевое значение типа канала и
falseво втором возвращаемом значении (если используется), что сигнализирует о закрытии канала. -
Запись в закрытый канал: Попытка записи в закрытый канал приводит к панике (
panic). Это ошибка времени выполнения.
Пример:
ch := make(chan int)
close(ch)
// Чтение
v, ok := <-ch // ok == false, v == 0
// Запись
ch <- 1 // panic: send on closed channel
Таким образом, закрытый канал можно безопасно читать до тех пор, пока в нём есть данные, но нельзя писать.