Я про гонку не понял.
Мы там вроде как не ждем окончания горутин. Логично, что пока мы читаем читаем из одной переменной, горутина поменяет значение и значение в синглтоне изменится.
Но если мы просто дождемся окончания всех горутин, то значение будет одинаковое.
Как мьютекс тут влияет вообще?
Контейнеры в го особо и не нужны (не говоря уже о том, что они не дают компайл-тайм гарантий), инструментария языка достаточно для того, чтобы инициализировать зависимости или просто вручную, или кодогенеративно.
Тонкости реализации Singleton на Golang