Sobes.tech
Intern
31

Жолдаушысы жоқ буферсіз арна ch := make(chan int) болған кезде, бір горутина ch <- 1 деп орындаса, ал бағдарламада белсенді қабылдаушы болмаса, бұл операция не болар? Арна автоматты түрде кеңейіп, қабылдау асинхронды түрде орындалады Горутина блокталады, қабылдаушы пайда болғанша Мән жіберілуі мүмкін емес, қате болмайды Жіберу panic-ке әкеледі

Сұралған компаниялар
AvitoAvito

AI-дан жауап

sobes.tech AI

В Go небуферизованный канал блокирует операцию отправки до тех пор, пока другая горутина не выполнит приём значения из канала. В вашем случае, если в программе нет активного получателя, операция ch <- 1 заблокируется и горутина, выполняющая отправку, будет ждать.

Канал не расширяет буфер автоматически, значение не отбрасывается и panic не вызывается.

Пример:

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

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

// Если здесь нет чтения из ch, отправка будет ждать