Sobes.tech
Junior — Middle

Go dilinde 'Once' kavramını açıklayabilir misiniz ve hangi durumlarda kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, sync.Once belirli bir fonksiyonun yalnızca bir kez çalışmasını garanti eden bir yapıdır, hatta çağrı aynı anda birden fazla goroutine tarafından yapılsa bile. Bu, veritabanı bağlantısı kurmak veya yapılandırma yüklemek gibi yalnızca bir kez oluşturulması gereken kaynakların başlatılması için faydalıdır.

Kullanım örneği:

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'lerin tamamlanmasını bekle
}

Bu örnekte, initialize fonksiyonu tam olarak bir kez çağrılacaktır, goroutine sayısından bağımsız olarak.