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