Назад к вопросам
МТС Digital
Junior — Middle
76
Каким образом осуществляется передача данных из горутины в буферизированный канал в Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go передача данных из горутины в буферизированный канал осуществляется с помощью операции отправки (chan <- value). Буферизированный канал имеет внутренний буфер фиксированного размера, который позволяет горутине отправлять несколько значений без немедленной блокировки, если буфер не заполнен.
Пример:
ch := make(chan int, 3) // буферизированный канал с размером буфера 3
go func() {
ch <- 1 // отправка значения в канал
ch <- 2
ch <- 3
// если буфер заполнен, горутина заблокируется до освобождения места
}()
// Получение данных из канала
for i := 0; i < 3; i++ {
val := <-ch
fmt.Println(val)
}
Если буфер канала не заполнен, отправка происходит немедленно и горутина продолжает работу. Если буфер заполнен, горутина блокируется до тех пор, пока другой поток не прочитает данные из канала и освободит место в буфере.