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
ამიტომ, მონაცემები შეიძლება გაიგზავნოს მხოლოდ გახსნილ არხებზე.