Sobes.tech
Middle+

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

sobes.tech AI

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

Go-ში, არხი უნდა დახუროს გამგზავნი (sender), არა მიმღები (receiver). არხის დახურვა სიგნალია, რომ მეტი მნიშვნელობა აღარ იქნება გადაგზავნილი, და მკითხველები შეიძლება სწორად დაასრულონ კითხვა, აღმოაჩინონ რომ არხი დახურულია.

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

მაგალითი:

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

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