Junior — Middle
Go dilində 'Once' anlayışını izah edə bilərsiniz və hansı hallarda tətbiq olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, sync.Once müəyyən bir funksiyanın yalnız bir dəfə icra olunmasını təmin edən bir quruluşdur, hətta çağırış eyni zamanda bir neçə goroutine-dən gəlsə belə. Bu, verilənlər bazası ilə əlaqə qurmaq və ya konfiqurasiyanı yükləmək kimi, yalnız bir dəfə yaradılmalı olan resursların başlanğıcı üçün faydalıdır.
İstifadə nümunəsi:
var once sync.Once
func initialize() {
fmt.Println("Başlatma tamamlandı")
}
func main() {
for i := 0; i < 5; i++ {
go func() {
once.Do(initialize)
}()
}
time.Sleep(time.Second) // Goroutine-lərin tamamlanmasını gözləyirik
}
Bu nümunədə, initialize funksiyası dəqiq bir dəfə çağırılacaq, goroutine-lərin sayıdan asılı olmayaraq.