Back to questions
Senior
6
Может ли при буферизованном канале одна горутина писать напрямую в другую горутину?
Companies where asked
Cloud.ru
Answer from AI
sobes.tech AI
В Go каналы служат для коммуникации между горутинами, но они не предоставляют прямого доступа одной горутине к памяти другой. Даже при буферизованном канале одна горутина не пишет напрямую в другую — она отправляет данные в канал, а другая горутина читает их из канала.
Буферизованный канал позволяет отправителю не блокироваться сразу, если буфер не заполнен, но данные всё равно передаются через канал, а не напрямую в память другой горутины.
Пример:
dataCh := make(chan int, 2) // буфер на 2 элемента
go func() {
dataCh <- 1 // отправка в канал, не блокируется, если буфер не полон
dataCh <- 2
}()
val1 := <-dataCh // получение из канала
val2 := <-dataCh
Таким образом, коммуникация происходит через канал, а не напрямую между горутинами.