Sobes.tech
Junior — Middle

O'qish va yozish uchun ochilmagan kanalga ma'lumot yuborish mumkinmi?

sobes.tech AI

AIdan javob

Go tilida, yozish uchun ochilmagan kanalga ma'lumot yuborib bo'lmaydi. Kanal yopilgan bo'lsa (close(channel) yordamida), unga yuborishga urinish runtime panic bilan tugaydi.

Ammo, yopilgan kanaldan o'qish mumkin: bu holda, o'qish kanalning tipidagi nol qiymatini va kanal yopilganligini ko'rsatadigan flagni qaytaradi.

Misol:

ch := make(chan int)
close(ch)

// Yopilgan kanaldan o'qish xavfsiz
value, ok := <-ch // ok == false

// Yopilgan kanaldan yuborish panicga olib keladi
ch <- 1 // panic: send on closed channel

Shunday qilib, faqat ochiq kanallarga ma'lumot yuborish mumkin.