Sobes.tech
Junior — Middle

Je možné odoslať údaje do kanála s hodnotou nil?

sobes.tech AI

Odpoveď od AI

V jazyku Go nie je možné odoslať údaje na kanál, ak je nil. Pokus o odoslaní hodnoty na nil-kanál spôsobí, že gorutina bude navždy zablokovaná, pretože takýto kanál nie je inicializovaný a nemôže prijímať údaje.

Príklad:

var ch chan int // ch == nil

go func() {
    ch <- 1 // bude navždy blokované
}()

// program sa zasekne

Aby ste predišli zablokovaniu, je potrebné kanál pred použitím inicializovať:

ch := make(chan int)
ch <- 1 // funguje správne

Ak môže byť kanál nil, pred odoslaním skontrolujte jeho hodnotu alebo použite select s default na zabránenie zablokovaniu.