Junior — Middle
Може ли слати податке у канал који има вредност nil?
sobes.tech АИ
Одговор од АИ
U jeziku Go, ne možete slati podatke na kanal ako je nil. Pokušaj slanja vrednosti na nil-kanal će dovesti do toga da gorutina zauvek bude blokirana, jer takav kanal nije inicijalizovan i ne može primati podatke.
Primer:
var ch chan int // ch == nil
go func() {
ch <- 1 // zauvek blokira
}()
// program će se zaglaviti
Da biste izbegli blokiranje, kanal treba inicijalizovati pre upotrebe:
ch := make(chan int)
ch <- 1 // radi ispravno
Ako kanal može biti nil, pre slanja proverite njegovu vrednost ili koristite select sa default da biste izbegli blokiranje.