Sobes.tech
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.