Назад к вопросам
Junior — Middle
81
Применяли ли вы функцию Once в языке Go, и как её использовали в своих проектах?
Ответ от нейросети
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) // initialize вызовется только один раз
}()
}
time.Sleep(time.Second) // Ждём завершения горутин
}
В своих проектах я применял sync.Once для ленивой инициализации конфигурации или подключения к базе данных, чтобы избежать повторных инициализаций и гонок данных.