La interfaz `error`
Parte de la sección Fundamentos del Journey de GO de Coddy — lección 103 de 109.
En Go, la interfaz error es un tipo incorporado que representa condiciones de error. Cualquier tipo que implemente el método Error() satisface esta interfaz.
Aquí está la definición de la interfaz error:
type error interface {
Error() string
}Crea un tipo de error personalizado:
type MyError struct {
Message string
}
func (e MyError) Error() string {
return e.Message
}
func main() {
err := MyError{Message: "something went wrong"}
fmt.Println(err)
}La salida será:
something went wrongDesafío
FácilEn este desafío, trabajarás con la interfaz error de Go. Necesitas crear un error personalizado usando la función errors.New() y luego verificar si existe un error.
El código ya tiene una función que devuelve un error. Tu tarea es verificar si el error no es nil e imprimir un mensaje apropiado.
Hoja de referencia
La interfaz error es un tipo integrado que representa condiciones de error. Cualquier tipo que implemente el método Error() satisface esta interfaz:
type error interface {
Error() string
}Crea un tipo de error personalizado:
type MyError struct {
Message string
}
func (e MyError) Error() string {
return e.Message
}
func main() {
err := MyError{Message: "something went wrong"}
fmt.Println(err) // Salida: something went wrong
}Usa errors.New() para crear errores simples y comprobar si un error no es nil.
Pruébalo tú mismo
package main
import (
"errors"
"fmt"
)
func main() {
// Esta función devuelve un error
err := generateError()
// TODO: Comprobar si err no es nil
// Si err no es nil, imprime: "Error occurred: " seguido del mensaje de error
// SUGERENCIA: Usa una sentencia if para comprobar si err != nil
// Esta línea solo se ejecutará si no ocurrió ningún error
fmt.Println("Program completed successfully")
}
// Esta función genera un error
func generateError() error {
return errors.New("something went wrong")
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparación - Parte 1Operadores de comparación - Parte 2Operador lógico ANDOperador lógico OROperador lógico NOTConceptos básicos de precedencia de operadoresResumen: Realizar comparaciones7Flujo de control: Bucles
Explicación del bucle `for`Bucle `for` - BásicoBucle `for` - Solo condiciónLa palabra clave `break`La palabra clave `continue`Bucles anidadosResumen - Repetición de acciones2Variables y tipos de datos básicos
¿Qué es una variable?Inferencia de tipos con `:=`Enteros (int)Números de punto flotanteBooleanosStringsValores ceroConstantesConvenciones de nomenclaturaResumen - Variables y tipos5Entrada y salida básica
Salida con formatoVerbos de formatoImpresión de tiposObtener entrada básica del usuarioResumen: Entrada y salida8Funciones
Comprendiendo las funcionesDeclaración de una funciónLlamada a funcionesParámetros de funciónRetorno de un solo valorRetorno de múltiples valoresValores de retorno con nombreConceptos básicos del alcance de las funcionesResumen: Creando código reutilizable3Operadores básicos
Operadores aritméticosOperador de divisiónEl operador móduloOperador de asignaciónOperadores de asignación compuestaIncremento y decrementoResumen - Cálculos6Flujo de control: Condicionales
La sentencia `if`La palabra clave `else`La palabra clave `else if`Sombreado de variables en `if`Inicialización de variablesLa sentencia `switch``switch` con expresiones`switch` sin expresiónLa palabra clave `fallthrough`Resumen: Toma de decisiones