Sobes.tech
Junior — Middle
108

Буферсіз деректер тасымалдау арнасының жұмыс принципін түсіндіріңіз.

Сұралған компаниялар
Эрливидео
Магнит Тех

AI-дан жауап

sobes.tech AI

Небуферизованный канал в Go — это канал с ёмкостью 0, то есть он не хранит значения внутри. Отправка в такой канал блокируется до тех пор, пока другой горутина не примет значение, и наоборот — приём блокируется, пока не появится отправитель.

Это обеспечивает синхронизацию между горутинами: отправитель и получатель должны встретиться одновременно для передачи данных.

Пример:

ch := make(chan int) // небуферизованный канал

// Отправка
go func() {
    ch <- 42 // блокируется, пока кто-то не прочитает
}()

// Приём
val := <-ch // блокируется, пока кто-то не отправит
fmt.Println(val) // выведет 42

Такой канал полезен для синхронизации и передачи данных "по требованию" без буферизации.