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)
}
Այս օրինակով, ալիքը փակվում է մեկ անգամ բոլոր արժեքները ուղարկելուց հետո։