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.