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