Сколько элементов можно положить в канал

«Сколько элементов можно положить в канал» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go количество элементов, которые можно положить в канал, определяется его буфером. Если канал небуферизованный (создан без указания размера буфера), то он может содержать только один элемент, и отправка блокируется до тех пор, пока элемент не будет получен. Для буферизованного канала максимальное количество элементов равно размеру буфера, указанному при создании.

Пример:

ch := make(chan int)    // Небуферизованный — вмещает 1 элемент (с блокировкой)
bufCh := make(chan int, 3) // Буферизованный — вмещает 3 элемента до блокировки

При попытке отправить больше элементов, чем позволяет буфер, операция отправки заблокируется, пока не освободится место.