Sobes.tech
Junior — Middle

Čo sa stane, ak sa pokúsite čítať údaje z kanála, ktorý ešte nebol inicializovaný?

sobes.tech AI

Odpoveď od AI

Ak sa pokúsite čítať údaje z kanála v Go, ktorý nebol inicializovaný (t.j. je nil), operácia čítania bude zablokovaná navždy. To spôsobí, že gorutina, ktorá sa snaží čítať z takého kanála, sa zasekne, pretože kanál neexistuje a nemôže prenášať údaje.

Príklad:

var ch chan int // ch je nil

func main() {
    fmt.Println(<-ch) // sa zablokuje navždy
}

Aby ste sa tomu vyhli, je potrebné kanál inicializovať pomocou make, napríklad: ch := make(chan int).