Sobes.tech
Junior — Middle

Kas nutiks, jei bandysite skaityti duomenis iš kanalo, kuris dar nebuvo inicializuotas?

sobes.tech AI

Atsakymas iš AI

Jei bandysite skaityti duomenis iš Go kanalo, kuris nebuvo inicializuotas (t.y., yra nil), skaitymo operacija amžinai užblokuos. Tai sukels, kad gorutina, bandanti skaityti iš tokio kanalo, užstrigs, nes kanalas neegzistuoja ir negali perduoti duomenų.

Pavyzdys:

var ch chan int // ch yra nil

func main() {
    fmt.Println(<-ch) // užstrigs amžinai
}

Norint to išvengti, kanalą reikia inicializuoti naudojant make, pavyzdžiui: ch := make(chan int).