Sobes.tech
Junior — Middle

Използвали ли сте функцията Once в езика Go и как сте я използвали във вашите проекти?

sobes.tech AI

Отговор от AI

В езика Go функцията sync.Once се използва, за да гарантира, че даден парче код ще бъде изпълнено точно веднъж, дори ако извикването идва от няколко горутини едновременно. Това е полезно, например, за инициализация на ресурси, които трябва да бъдат създадени само веднъж.

Пример за използване:

var once sync.Once

func initialize() {
    fmt.Println("Инициализацията е завършена")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize) // initialize ще бъде извикано само веднъж
        }()
    }
    time.Sleep(time.Second) // Изчакваме горутините да приключат
}

В проектите си използвах sync.Once за ленивата инициализация на конфигурацията или връзката с базата данни, за да избегна повторни инициализации и състезателни условия.