Sobes.tech
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 колдонуп блоктоону алдын алса болот.