Sobes.tech
Intern

Que se passe-t-il avec cette opération d'envoi? Le canal s'étendra automatiquement et la réception sera effectuée de manière asynchrone La goroutine sera bloquée jusqu'à ce qu'un récepteur apparaisse La valeur sera ignorée sans erreur L'envoi provoquera un panic

sobes.tech IA

Réponse de l'IA

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

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

Пример:

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

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

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