Desarrollador Go: pregunta de entrevista
¿Cómo diseñas el manejo de errores en Go?
En Go, los errores son valores de retorno explícitos. Añade contexto con fmt.Errorf y %w, preserva la causa para errors.Is o errors.As y decide en el límite si quien llama puede recuperarse.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Los errores son valores, así que las preguntas de diseño son las mismas que para cualquier valor: qué necesita decidir el llamador, cuánto contexto añade cada capa y dónde se detiene el error. Envuelve con %w para que la causa siga siendo inspeccionable, usa errores sentinel o con tipo solo donde un llamador ramifica sobre ellos y traduce al formato de transporte en la frontera. Registrar y devolver el mismo error produce ruido duplicado, así que elige una cosa por capa.
Ejemplo
Devuelve fmt.Errorf("load profile: %w", err) para que un handler pueda reconocer un error sentinel y elegir el estado HTTP correcto. El handler asocia errors.Is(err, ErrNotFound) a 404, registra todo lo demás una vez con el ID de solicitud y devuelve un cuerpo 500 genérico para que los detalles internos nunca lleguen al cliente.
Errores frecuentes
- Envolver con %v y perder la posibilidad de usar errors.Is y errors.As.
- Comprobar cadenas de error con strings.Contains en lugar de comparaciones con tipo.
- Exponer texto de error crudo de la base de datos o del proveedor en respuestas de API.
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.