Sobes.tech
Junior — Middle

Ի՞նչ հաճախականությամբ պետք է փակել ալիքը Go-ում սխալներից խուսափելու համար։

sobes.tech AI

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

Go լեզվում, անհրաժեշտ է մի ալիք փակել միայն մեկ անգամ, երբ այլևս նախատեսված չէ տվյալներ ուղարկել դրա մեջ։ Մի քանի անգամ ալիքը փակելը կհանգեցնի Panic (runtime panic)-ի։

Մեծ կարևորություն ունի՝

  • Ալիքը գրողը պետք է այն փակել, ոչ թե այն, ով կարդում է։
  • Եթե ալիքը օգտագործվում է goroutine-ների միջև տվյալների փոխանցման համար, ապա փակումը ցույց է տալիս, որ այլ տվյալներ չեն լինելու։

Օրինակ՝

ch := make(chan int)
func() {
    defer close(ch) // ալիքը փակվում է մեկ անգամ
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

Այս օրինակով, ալիքը փակվում է մեկ անգամ բոլոր արժեքները ուղարկելուց հետո։