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 за ленивата инициализация на конфигурацията или връзката с базата данни, за да избегна повторни инициализации и състезателни условия.