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.