Sobes.tech
Junior — Middle

Kas nutiks, jei įvykdysite rašymo operaciją tuščiam (nil) kanalui Go kalboje?

sobes.tech AI

Atsakymas iš AI

Jei bandysite įrašyti reikšmę į nil kanalą Go, programa amžinai užstringa (deadlock). Tai vyksta todėl, kad nil kanalas nėra inicializuotas ir negali priimti ar siųsti reikšmių.

Pavyzdys:

var ch chan int // ch == nil

func main() {
    ch <- 1 // čia programa užstringa
}

Norint to išvengti, kanalą reikia inicializuoti naudojant make, pavyzdžiui:

ch := make(chan int)

Tik po to galima saugiai rašyti ir skaityti iš kanalo.