Junior — Middle
Můžete sdílet své zkušenosti s implementací konceptu Inversion of Control v projektech?
sobes.tech AI
Odpověď od AI
Implementace Inversion of Control (IoC) v jazyce Go se obvykle dosahuje předáváním závislostí do konstruktorů nebo funkcí, nikoli prostřednictvím rámců, jako v jiných jazycích. Například místo vytváření závislostí uvnitř struktury je předáváme zvenčí, což usnadňuje testování a zvyšuje flexibilitu.
Příklad:
// Rozhraní pro logger
type Logger interface {
Log(message string)
}
// Implementace loggeru
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Služba závislá na Loggeru
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Práce dokončena")
}
// Použití
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Tento přístup umožňuje snadno měnit implementace závislostí a zjednodušuje jednotkové testování.