Sobes.tech
Intern

Τι συμβαίνει με αυτήν τη λειτουργία αποστολής; Το κανάλι θα επεκταθεί αυτόματα και η λήψη θα πραγματοποιηθεί ασύγχρονα Η goroutine θα μπλοκαριστεί μέχρι να εμφανιστεί ένας δέκτης Η τιμή θα απορριφθεί χωρίς σφάλμα Η αποστολή θα προκαλέσει ένα panic

sobes.tech AI

Απάντηση από AI

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

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

Пример:

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

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

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