Sobes.tech
Senior

Kas vyksta įrašant į neįdiegto (nil) kanalo?

sobes.tech AI

Atsakymas iš AI

Go kalboje rašymas į neįdiegto (nil) kanalo sukelia gorutinos užblokavimą amžinai, nes nil-kanalas nėra pasiruošęs priimti ar siųsti duomenis.

Pavyzdys:

var ch chan int // ch == nil

func main() {
    ch <- 1 // amžinai užblokuojama, nes kanalas nil
}

Šis elgesys kartais naudojamas dinamiškai įjungti/išjungti kanalus select'e, nes operacijos su nil-kanalu niekada nevykdomos ir blokuoja gorutinas.