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).