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