Sobes.tech
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-თან ერთად, ბლოკირების თავიდან ასაცილებლად.