🔴 Сложный · 3 очк. Пакет sync
Что будет, если функция в sync.Once.Do(f) вызовет panic?
A Повторный Do вызовет f снова
B Do считается выполненным, f больше не вызовется
C Deadlock
D Once сбросится
Объяснение вопроса

sync.Once считает инициализацию выполненной после первого вызова Do, даже если f запаниковала. Повторные вызовы Do не будут вызывать f снова.

Практический вывод

Если инициализация обязательна для работы программы, обрабатывайте panic внутри f или используйте другой механизм (например, явную инициализацию при старте).

var once sync.Once
once.Do(func() { panic("init failed") })
once.Do(func() { /* не выполнится */ })
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.