Sobes.tech
Junior — Middle

¿Puedes compartir tu experiencia en la implementación del concepto de Inversión de Control en proyectos?

sobes.tech AI

Respuesta de la IA

La implementación del Inversion of Control (IoC) en Go generalmente se logra mediante la transmisión de dependencias en constructores o funciones, en lugar de a través de frameworks, como en otros lenguajes. Por ejemplo, en lugar de crear dependencias dentro de la estructura, las pasamos desde fuera, lo que facilita las pruebas y aumenta la flexibilidad.

Ejemplo:

// Interfaz para el registrador
 type Logger interface {
    Log(message string)
}

// Implementación del registrador
 type ConsoleLogger struct {}

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

// Servicio 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("Trabajo realizado")
}

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

Este enfoque permite cambiar fácilmente las implementaciones de dependencias y simplifica las pruebas unitarias.