Junior — Middle
Vai ir iespējams sūtīt datus uz kanālu ar vērtību nil?
sobes.tech AI
Atbilde no AI
Go valodā nav iespējams sūtīt datus uz kanālu, ja tas ir nil. Mēģinājums sūtīt vērtību uz nil-kanālu novedīs pie goroutine bloķēšanas uz mūžīgiem laikiem, jo šāds kanāls nav inicializēts un nevar pieņemt datus.
Piemērs:
var ch chan int // ch == nil
go func() {
ch <- 1 // tiek bloķēts uz mūžīgiem laikiem
}()
// programma iestrēgs
Lai izvairītos no bloķēšanas, kanālu jāinicializē pirms tā lietošanas:
ch := make(chan int)
ch <- 1 // darbojas pareizi
Ja kanāls var būt nil, pirms sūtīšanas pārbaudiet tā vērtību vai izmantojiet select ar default, lai izvairītos no bloķēšanas.