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)
}()
}
time.Sleep(time.Second) // Изчакваме горутините да приключат
}
В този пример функцията initialize ще бъде извикана точно веднъж, независимо от броя на горутините.