Слушайте, я очень рекомендую посмотреть то видео, которое я прислал. Там очень хорошо объясняется зачем вообще нужен спринг и IoC в джаве. Там и про проблему многопоточности у синглтонов, и про производительность и про много еще чего.
Что касается лично меня - я ищу лучшие практики построения приложения на го, а не ищу способ реализовать на го, то что я делаю на джаве.
IoC - это принцип, который существовал в 80 годах еще Smalltalk и по сей день используется во всех живых ЯП.
DIP - тоже принцип, которому больше 20 лет и который так же используется во множестве языков.
DI - простая как табуретка техника позволяющая реализовать DIP и IoC там где в этом есть смысл.
О чем все постоянно спорят?