Sobes.tech
Junior — Middle

Môžete sa podeliť o svoje skúsenosti s implementáciou konceptu Inversion of Control v projektoch?

sobes.tech AI

Odpoveď od AI

Implementácia Inversion of Control (IoC) v jazyku Go sa zvyčajne dosahuje prostredníctvom odovzdávania závislostí do konštruktorov alebo funkcií, nie prostredníctvom rámcov, ako v iných jazykoch. Napríklad namiesto vytvárania závislostí vnútri štruktúry ich odovzdávame zvonku, čo uľahčuje testovanie a zvyšuje flexibilitu.

Príklad:

// Rozhranie pre logger
 type Logger interface {
    Log(message string)
}

// Implementácia loggeru
 type ConsoleLogger struct {}

func (c *ConsoleLogger) Log(message string) {
    fmt.Println(message)
}

// Služba závislá od Loggeru
 type Service struct {
    logger Logger
}

func NewService(logger Logger) *Service {
    return &Service{logger: logger}
}

func (s *Service) DoWork() {
    s.logger.Log("Práca dokončená")
}

// Použitie
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()

Tento prístup umožňuje ľahko meniť implementácie závislostí a zjednodušuje jednotkové testovanie.