Sobes.tech
Junior — Middle

არის დაშვებული მონაცემების გაგზავნა არხზე, რომელიც არ არის გახსნილი წაკითხვასა და ჩაწერას?

sobes.tech AI

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

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

თუმცა, დახურული არხიდან კითხვა შესაძლებელია — ამ დროს კითხვა დაბრუნებს არხის ტიპის ნულ მნიშვნელობას და ფლაგს, რომელიც მიუთითებს, რომ არხი დახურულია.

მაგალითი:

ch := make(chan int)
close(ch)

// დახურული არხიდან კითხვა უსაფრთხოა
value, ok := <-ch // ok == false

// დახურული არხზე გაგზავნა გამოიწვევს პანიკას
ch <- 1 // panic: send on closed channel

ამიტომ, მონაცემები შეიძლება გაიგზავნოს მხოლოდ გახსნილ არხებზე.