Введение в каналы в Go
Канал связывает две горутины: одна кладет значение в общую очередь, другая забирает его, когда готова. Так данные идут по цепочке без гонок за одну переменную в памяти, если обмен идет только через эту связь.
Тип канала пишут как ключевое слово с типом элемента внутри. Создание дает готовую связь; без буфера отправка останавливается, пока кто-то не примет значение, а прием ждет, пока кто-то не отправит.
Отправка и прием используют стрелку к имени канала или от него. Операции блокируют ветку, пока вторая сторона не выполнит парную операцию, если только канал не с буфером или не закрыт.
В этом разделе пройдем отправку и прием, буфер, закрытие, перебор, выбор среди нескольких связей, направление параметра, пустой канал и сигнал конца работы. Горутины и ожидание группы уже знакомы; здесь добавим обмен значениями между ветками.