Sobes.tech
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.