Junior — Middle
Nil qiymatiga ega bo'lgan kanalga ma'lumot yuborish mumkinmi?
sobes.tech AI
AIdan javob
Go tilida, kanal nil bo‘lsa, ma'lumot yuborib bo‘lmaydi. nil-kanalga qiymat yuborishga urinish, goroutine’ni abadiy bloklashga olib keladi, chunki bunday kanal boshlang‘ich holatda emas va ma'lumot qabul qilmaydi.
Misol:
var ch chan int // ch == nil
go func() {
ch <- 1 // abadiy bloklanadi
}()
// dastur to‘xtaydi
Bloklanishni oldini olish uchun, kanalni ishlatishdan oldin uni initsializatsiya qilish kerak:
ch := make(chan int)
ch <- 1 // to‘g‘ri ishlaydi
Agar kanal nil bo‘lishi mumkin bo‘lsa, yuborishdan oldin uning qiymatini tekshirish yoki bloklanishni oldini olish uchun select bilan default ishlatish tavsiya etiladi.