Sobes.tech
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-ների թվից: