Menu
Coddy logo textTech

Funciones que devuelven errores

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 104 de 109.

En Go, las funciones comúnmente devuelven un error como su último valor de retorno para indicar si algo salió mal.

Crea una función que devuelva tanto un resultado como un error:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Llama a la función y maneja el error:

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

La salida será:

Error: cannot divide by zero
challenge icon

Desafío

Principiante

En este desafío, practicarás la creación de una función que devuelve un error cuando se proporciona una entrada no válida.

Debes completar la función validateUsername que comprueba si un nombre de usuario es válido. Un nombre de usuario es válido si tiene al menos 3 caracteres de longitud. Si el nombre de usuario es válido, devuelve nil para el error. Si no es válido, devuelve un error con un mensaje apropiado.

El código para llamar a tu función y manejar el error ya está escrito para ti.

Nota: Este desafío utiliza variables predefinidas en lugar de la entrada del usuario.

Hoja de referencia

Las funciones en Go comúnmente devuelven un error como su último valor de retorno para indicar si algo salió mal.

Crea una función que devuelva tanto un resultado como un error:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Maneja el error al llamar a la función:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

Devuelve nil cuando no hay error, y usa errors.New() para crear mensajes de error.

Pruébalo tú mismo

package main

import (
	"errors"
	"fmt"
)

func validateUsername(username string) error {
	// TODO: Comprobar si la longitud del nombre de usuario es inferior a 3 caracteres
	// Si lo es, devolver un error con el mensaje "username too short"
	// De lo contrario, devolver nil (sin error)
	
	return nil
}

func main() {
	// Probar con un nombre de usuario válido
	validName := "bob123"
	err1 := validateUsername(validName)
	if err1 != nil {
		fmt.Printf("%s is invalid: %v\n", validName, err1)
	} else {
		fmt.Printf("%s is valid!\n", validName)
	}
	
	// Probar con un nombre de usuario no válido
	invalidName := "ab"
	err2 := validateUsername(invalidName)
	if err2 != nil {
		fmt.Printf("%s is invalid: %v\n", invalidName, err2)
	} else {
		fmt.Printf("%s is valid!\n", invalidName)
	}
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos