Sobes.tech
Junior — Middle

Pouvez-vous partager votre expérience dans la mise en œuvre du concept d'Inversion de Contrôle dans des projets?

sobes.tech IA

Réponse de l'IA

La mise en œuvre du Contrôle d'Inversion (IoC) en Go est généralement réalisée en passant des dépendances dans les constructeurs ou les fonctions, plutôt que via des frameworks, comme dans d'autres langages. Par exemple, au lieu de créer des dépendances à l'intérieur de la structure, on les passe de l'extérieur, ce qui facilite les tests et augmente la flexibilité.

Exemple :

// Interface pour le logger
 type Logger interface {
    Log(message string)
}

// Implémentation du logger
 type ConsoleLogger struct {}

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

// Service dépendant de Logger
 type Service struct {
    logger Logger
}

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

func (s *Service) DoWork() {
    s.logger.Log("Travail effectué")
}

// Utilisation
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()

Cette approche permet de changer facilement les implémentations des dépendances et facilite les tests unitaires.