Junior — Middle
Оё имкон дорад маълумотҳоро ба канале, ки арзиши nil дорад, фиристод?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, имконнопазир аст, ки маълумот ба канал ирсол шавад, агар он nil бошад. кӯшиши ирсол кардани арзиш ба nil-канал, ба блокшавии доимии goroutine оварда мерасонад, зеро чунин канал оғоз нашудааст ва қабул кардани маълумотро наметавонад.
Масалан:
var ch chan int // ch == nil
go func() {
ch <- 1 // доимӣ блок мешавад
}()
// барнома дар ҳоли ҳозир мемонад
Барои пешгирӣ аз блокшавӣ, бояд каналро пеш аз истифодаи онро инициализатсия кард:
ch := make(chan int)
ch <- 1 // дуруст кор мекунад
Агар канал метавонад nil бошад, пеш аз ирсол, арзишашро санҷед ё бо select бо default кор кунед, то аз блокшавӣ пешгирӣ кунед.