Sobes.tech
Junior — Middle

Որտեղ պետք է փակել ալյումինը կոդում?

sobes.tech AI

Պատասխան AI-ից

Go-ում ալիքը պետք է փակել այն վայրում, որտեղ այն ստեղծվել է և որտեղ այլևս տվյալներ ուղարկելու ծրագիր չկա։ Սովորաբար, դա անում է ուղարկողը՝ նշելու համար ստացողներին, որ տվյալներ այլևս չեն լինելու։

Մեծ կարևորություն է ներկայացնում.

  • Ստացողները կարող են ստուգել ալիքի փակումը ընթերցման ժամանակ։
  • Միայն ուղարկողը պետք է փակել ալիքը՝ խուսափելու панիկից։

Օրինակ՝

ch := make(chan int)
func() {
    defer close(ch) // փակել ալիքը բոլոր տվյալները ուղարկելուց հետո
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // ստանում ենք տվյալներ, մինչև ալիքը փակվի
}