Back to questions
Junior — Middle
93
Можете объяснить концепцию 'Once' в языке Go и в каких случаях она применяется?
Answer from AI
sobes.tech 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 будет вызвана ровно один раз, независимо от количества горутин.