sync.Once?once.Do(f) выполняет f ровно один раз, даже при вызовах из нескольких горутин. Остальные вызовы Do блокируются, пока первый не завершится. Используется для ленивой инициализации синглтонов.
var once sync.Once
var instance *Service
func GetService() *Service {
once.Do(func() {
instance = initService()
})
return instance
}