Junior — Middle
Xatoliklarni oldini olish uchun Go'da kanalni nechta marta yopish kerak?
sobes.tech AI
AIdan javob
Go tilida, kanalni to'g'ri bir marta yopish kerak, unga endi ma'lumot yuborilmayotgan bo'lsa. Kanalni bir necha marta yopish panikaga (runtime panic) olib keladi.
Muhim:
- Kanalni yozayotgan kishi uni yopishi kerak, o'qiyotgan emas.
- Agar kanal gorutinalar o'rtasida ma'lumot uzatish uchun ishlatilsa, yopilishi, endi ma'lumotlar bo'lmasligini bildiradi.
Misol:
ch := make(chan int)
func() {
defer close(ch) // kanalni bir marta yopamiz
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val)
}
Ushbu misolda, kanal barcha qiymatlar yuborilgandan so'ng bir marta yopiladi.