Sobes.tech
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.