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.