Ответ
В Go количество элементов, которые можно положить в канал, определяется его буфером. Если канал небуферизованный (создан без указания размера буфера), то он может содержать только один элемент, и отправка блокируется до тех пор, пока элемент не будет получен. Для буферизованного канала максимальное количество элементов равно размеру буфера, указанному при создании.
Пример:
ch := make(chan int) // Небуферизованный — вмещает 1 элемент (с блокировкой)
bufCh := make(chan int, 3) // Буферизованный — вмещает 3 элемента до блокировки
При попытке отправить больше элементов, чем позволяет буфер, операция отправки заблокируется, пока не освободится место.