Desarrollador Go: pregunta de entrevista
¿Cómo usas interfaces de forma idiomática en Go?
Mantén las interfaces de Go pequeñas y defínelas del lado consumidor. Describen el comportamiento que necesita quien llama, no una jerarquía de clases ni toda la capacidad de un tipo concreto.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Las interfaces idiomáticas de Go se descubren, no se declaran por adelantado: el consumidor indica el método o dos que llama, y cualquier tipo con esos métodos la satisface de forma implícita. Las interfaces pequeñas se componen, son triviales de falsear en pruebas y evitan acoplar un paquete a una implementación concreta que no controla. Devolver tipos concretos y aceptar interfaces mantiene honesta la superficie pública sobre lo que necesita una función.
Ejemplo
Un servicio que solo necesita Read puede aceptar io.Reader en vez de una interfaz grande de almacenamiento. Un paquete de pagos define type Charger interface con un único método Charge junto al código que lo llama, de modo que el adaptador de Stripe y el fake de pruebas lo satisfacen sin importar el paquete de pagos.
Errores frecuentes
- Definir una interfaz grande en el paquete productor y obligar a cada implementación a cumplirla.
- Introducir una interfaz con una sola implementación solo para poder hacer mocks.
- Devolver una interfaz desde un constructor, lo que oculta métodos y anula las comprobaciones estáticas sobre el tipo concreto.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.