🟡 Средний · 2 очк. Пакет sync
Что делает sync.Once?
A Запускает горутину один раз
B Гарантирует однократное выполнение функции
C Создаёт синглтон
D Закрывает канал один раз
Объяснение вопроса

once.Do(f) выполняет f ровно один раз, даже при вызовах из нескольких горутин. Остальные вызовы Do блокируются, пока первый не завершится. Используется для ленивой инициализации синглтонов.

var once sync.Once
var instance *Service

func GetService() *Service {
    once.Do(func() {
        instance = initService()
    })
    return instance
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.