Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Եթե փորձեք կարդալ տվյալներ Go-ում չհիմնավորված ալիքից (այսինքն՝ nil), ապա ընթերցման գործողությունը հավերժորեն կլոկավորվի: Սա կհանգեցնի այն բանին, որ այդ ալիքից ընթերցող գորուտինան կկանգնի, քանի որ ալիքը գոյություն չունի և տվյալներ փոխանցել չի կարող:

Օրինակ՝

var ch chan int // ch nil է

func main() {
    fmt.Println(<-ch) // հավերժական լոկացիա
}

Այսից խուսափելու համար, ալիքը պետք է սկսվի make-ի միջոցով, օրինակ՝ ch := make(chan int)։