Junior — Middle
Lze odeslat data do kanálu s hodnotou nil?
sobes.tech AI
Odpověď od AI
V jazyce Go nelze odesílat data do kanálu, pokud je nil. Pokus o odeslání hodnoty do nil-kanálu způsobí, že goroutine bude navždy zablokována, protože takový kanál není inicializován a nemůže přijímat data.
Příklad:
var ch chan int // ch == nil
go func() {
ch <- 1 // bude navždy blokováno
}()
// program se zasekne
Aby se zabránilo zablokování, je třeba kanál před použitím inicializovat:
ch := make(chan int)
ch <- 1 // funguje správně
Pokud může být kanál nil, před odesláním je třeba zkontrolovat jeho hodnotu nebo použít select s default, aby se zabránilo zablokování.