Sobes.tech
Junior — Middle

სად არის კოდის რომელ ნაწილში საჭირო დახუროთ არხი?

sobes.tech AI

პასუხი AI-სგან

Go-ში არხი უნდა დაიხუროს იმ ადგილას, სადაც ის შექმნილია და სადაც აღარ იგეგმება მონაცემების გაგზავნა. ჩვეულებრივ, ამას აკეთებს გამგზავნი, რათა მიუთითოს მიმღებებზე, რომ მეტი მონაცემები აღარ იქნება.

მნიშვნელოვანია:

  • მიმღებნი შეუძლიათ წაკითხვის დროს გადაამოწმონ არხის დახურვა.
  • მხოლოდ გამგზავნმა უნდა დახუროს არხი, რათა თავიდან აიცილოს პანიკა.

მაგალითი:

ch := make(chan int)
func() {
    defer close(ch) // დავხუროთ არხი ყველა მონაცემის გაგზავნის შემდეგ
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // მონაცემებს ვიღებთ, სანამ არხი არ დაიხურება
}