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