Junior — Middle
Կարող եք բացատրել 'Once' կոնցեպտը Go լեզվում և որ դեպքերում է կիրառվում:
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, sync.Once կառուցվածք է, որը երաշխավորում է, որ որոշակի ֆունկցիա կիրականացվի միայն մեկ անգամ, նույնիսկ եթե կանչը կատարվում է միաժամանակ մի քանի goroutine-ներից: Սա օգտակար է ռեսուրսների սկզբնականացման համար, որոնք պետք է ստեղծվեն միայն մեկ անգամ, օրինակ՝ կապ հաստատել տվյալների բազայի հետ կամ բեռնել կոնֆիգուրացիան:
Օգտագործման օրինակ:
var once sync.Once
func initialize() {
fmt.Println("Սկզբնականացումը ավարտված է")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // սպասում ենք goroutine-ների ավարտին
}
Այս օրինակով, initialize ֆունկցիան կկոչվի միայն մեկ անգամ, անկախ goroutine-ների թվից: