Junior — Middle
შეგიძლიათ მონაცემები გაუგზავნოთ ნული მნიშვნელობის არხს?
sobes.tech AI
პასუხი AI-სგან
Go ენის ფარგლებში, შეუძლებელია მონაცემების გაგზავნა არხზე, თუ ის nil არის. მცდელობა, გაგზავნოთ მნიშვნელობა nil-არხზე, გამოიწვევს goroutine-ის მუდმივ ბლოკირებას, რადგან ასეთი არხი არ არის ინიციალიზებული და მონაცემებს ვერ მიიღებს.
მაგალითი:
var ch chan int // ch == nil
go func() {
ch <- 1 // მუდმივად ბლოკდება
}()
// პროგრამა გაჩერდება
ბლოკირების თავიდან ასაცილებლად, არხი უნდა ინიციალიზდეს გამოყენებამდე:
ch := make(chan int)
ch <- 1 // სწორად მუშაობს
თუ არხი შეიძლება იყოს nil, გაგზავნამდე დააკვირდით მის მნიშვნელობას ან გამოიყენეთ select-ს default-თან ერთად, ბლოკირების თავიდან ასაცილებლად.