Как создать канал в Go?

Intern
891 просмотров
AFK Offer AI

Канал создаётся через make:

ch := make(chan int)      // небуферизованный
ch := make(chan int, 10)  // буферизованный на 10 элементов

Отправка: ch <- 42. Получение: val := <-ch.

Небуферизованный канал блокирует отправителя, пока получатель не прочитает (и наоборот) — это точка синхронизации.

Буферизованный блокирует только когда буфер полон (отправка) или пуст (получение).

ch := make(chan string, 1)
ch <- "hello"       // не блокирует, буфер есть
msg := <-ch          // "hello"

Закрытие: close(ch). После закрытия чтение возвращает zero value, запись — panic.

Следующий вопрос

Что такое мониторинг приложения?