Middle+
Kanalni kim yopishi kerak - yozuvchi yoki o'quvchi?
sobes.tech AI
AIdan javob
Go tilida, kanal yozuvchi (sender) tomonidan yopilishi kerak, o'quvchi (receiver) tomonidan emas. Kanalni yopish, bundan keyin qiymatlar yuborilmasligini signallaydi va o'quvchilar yopilgan kanalni aniqlab, to'g'ri o'qishni yakunlashlari mumkin.
Agar o'quvchi kanalni yopib qo'ysa va yozuvchi davom etsa, bu panic (panika) bilan tugaydi. Shuning uchun, kanalni yopish mas'uliyati uni yozayotgan tomonda bo'ladi.
Misol:
ch := make(chan int)
func() {
defer close(ch) // yozuvchi kanalni yopadi
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // yopilgunga qadar o'qiydi
}