Sobes.tech
Junior — Middle

Se pot trimite date către un canal care are valoarea nil?

sobes.tech AI

Răspuns de la AI

În Go, nu poți trimite date către un canal dacă acesta este nil. Încercarea de a trimite o valoare către un canal nil va duce la blocarea goroutine-ului pentru totdeauna, deoarece un astfel de canal nu este inițializat și nu poate primi date.

Exemplu:

var ch chan int // ch == nil

go func() {
    ch <- 1 // se blochează pentru totdeauna
}()

// programul va rămâne blocat

Pentru a evita blocarea, trebuie să inițializezi canalul înainte de utilizare:

ch := make(chan int)
ch <- 1 // funcționează corect

Dacă canalul poate fi nil, verifică valoarea sa înainte de a trimite date sau folosește select cu default pentru a evita blocarea.