Назад к вопросам
Junior
160
questionbank
Как правильно закрыть канал в Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Закрытие канала означает, что больше данных отправлять в него нельзя. При попытке отправить данные в закрытый канал произойдет паника.
Использовать функцию close().
ch := make(chan int)
close(ch)
Важно знать:
- Закрывать канал следует один раз, обычно со стороны отправителя данных.
- Получение данных из закрытого канала возможно до тех пор, пока в нем есть данные.
- После исчерпания данных из закрытого канала последующие операции чтения будут возвращать нулевое значение типа элемента канала и
falseв качестве второго булевого значения, указывающего на успешность операции.
v, ok := <-ch // ok будет false после исчерпания данных из закрытого канала
- Попытка закрыть уже закрытый канал вызовет панику.
- Попытка получить данные из
nilканала заблокирует горутину. - Попытка отправить данные в
nilканал заблокирует горутину.