sync.Once.Do(f) вызовет panic?sync.Once считает инициализацию выполненной после первого вызова Do, даже если f запаниковала. Повторные вызовы Do не будут вызывать f снова.
Если инициализация обязательна для работы программы, обрабатывайте panic внутри f или используйте другой механизм (например, явную инициализацию при старте).
var once sync.Once
once.Do(func() { panic("init failed") })
once.Do(func() { /* не выполнится */ })