Las interfaces funcionales molan, pero cuidado con acoplar la configuración a la inyección de dependencias. Prefiero mil veces tener interfaces explícitas aunque sean muchas, porque el día que necesites mockear para tests, agradeces no tener que construir un servicio con opciones solo para cambiar un repo. Además, con Go 1.18+ puedes usar genéricos para reducir interfaces de repositorio sin perder tipado: type Repository[T any] interface { Find(ctx context.Context, id string) (T, error); Save(ctx context.Context, entity T) error }. Así tienes una interfaz por entidad, no por operación, y mantienes la seguridad. ¿Alguien ha probado este enfoque en producción?