Назад к вопросам
Junior — Middle
81
Объясните принцип функционирования небуферизованного канала передачи данных
Компании, где спрашивали
Эрливидео
Магнит Тех
Ответ от нейросети
sobes.tech AI
Небуферизованный канал в Go — это канал с ёмкостью 0, то есть он не хранит значения внутри. Отправка в такой канал блокируется до тех пор, пока другой горутина не примет значение, и наоборот — приём блокируется, пока не появится отправитель.
Это обеспечивает синхронизацию между горутинами: отправитель и получатель должны встретиться одновременно для передачи данных.
Пример:
ch := make(chan int) // небуферизованный канал
// Отправка
go func() {
ch <- 42 // блокируется, пока кто-то не прочитает
}()
// Приём
val := <-ch // блокируется, пока кто-то не отправит
fmt.Println(val) // выведет 42
Такой канал полезен для синхронизации и передачи данных "по требованию" без буферизации.