Sobes.tech
Junior — Middle

რამდენჯერ უნდა დახუროთ არხი Go-ში შეცდომების თავიდან ასაცილებლად?

sobes.tech AI

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

Go ენაში, აუცილებელია არხის დახურვა ზუსტად ერთხელ, როდესაც აღარ გეგმავთ მისში მონაცემების გადაცემას. არხის რამდენიმე ჯერ დახურვა გამოიწვევს პანიკას (runtime panic).

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

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

მაგალითი:

ch := make(chan int)
func() {
    defer close(ch) // არხის ერთი ჯერ დახურვა
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

ამ მაგალითში, არხი ერთხელ იხურება ყველა მნიშვნელობის გაგზავნის შემდეგ.