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