Sobes.tech
Junior — Middle

Co se stane, když se pokusíte přečíst data z kanálu, který ještě nebyl inicializován?

sobes.tech AI

Odpověď od AI

Pokud se pokusíte číst data z kanálu v Go, který nebyl inicializován (tedy je nil), operace čtení se navždy zablokuje. To způsobí, že goroutine, která se snaží číst z takového kanálu, se zasekne, protože kanál neexistuje a nemůže přenášet data.

Příklad:

var ch chan int // ch je nil

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

Abychom se tomu vyhnuli, je třeba kanál inicializovat pomocí make, například: ch := make(chan int).