Sobes.tech
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í.