Junior — Middle
Puoi condividere la tua esperienza nell'implementazione del concetto di Inversion of Control nei progetti?
sobes.tech AI
Risposta dell'AI
L'implementazione dell'Inversion of Control (IoC) in Go si ottiene generalmente passando le dipendenze nei costruttori o nelle funzioni, piuttosto che tramite framework, come in altri linguaggi. Ad esempio, invece di creare le dipendenze all'interno della struttura, le passiamo dall'esterno, facilitando i test e aumentando la flessibilità.
Esempio:
// Interfaccia per il logger
type Logger interface {
Log(message string)
}
// Implementazione del logger
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Servizio che dipende da Logger
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Lavoro completato")
}
// Utilizzo
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Questo approccio permette di cambiare facilmente le implementazioni delle dipendenze e semplifica i test unitari.