Junior — Middle
Veri, tampon olmadan bir kanala veri gönderirken değişken değeri nerede saklanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
В Go, при отправке значения в канал без буфера (unbuffered channel), значение не сохраняется внутри канала, а передаётся напрямую от отправителя к получателю.
Это означает, что операция отправки блокируется до тех пор, пока другой горутина не выполнит операцию получения из этого канала. Таким образом, значение фактически "передаётся по рукам" между отправителем и получателем, а не хранится где-то внутри канала.
Пример:
ch := make(chan int) // канал без буфера
// Отправка
go func() {
ch <- 42 // блокируется, пока кто-то не прочитает
}()
// Получение
val := <-ch // разблокирует отправителя
fmt.Println(val) // 42
Таким образом, в канале без буфера нет внутреннего хранилища для значений — передача синхронизирована между отправителем и получателем.