Junior — Middle
Podes partilhar a tua experiência na implementação do conceito de Inversão de Controlo em projetos?
sobes.tech IA
Resposta da IA
A implementação do Inversion of Control (IoC) em Go é geralmente alcançada através da passagem de dependências nos construtores ou funções, em vez de usar frameworks, como em outras linguagens. Por exemplo, em vez de criar dependências dentro da estrutura, passamo-las de fora, o que facilita os testes e aumenta a flexibilidade.
Exemplo:
// Interface para o logger
type Logger interface {
Log(message string)
}
// Implementação do logger
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Serviço que depende de Logger
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Trabalho concluído")
}
// Uso
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Este método permite alterar facilmente as implementações de dependências e simplifica os testes unitários.