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