Menu
Coddy logo textTech

Creación de errores con formato

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

Creación de errores con formato... le permite incluir valores dinámicos en los mensajes de error.

La función fmt.Errorf() crea errores con cadenas con formato, de manera similar a fmt.Printf():

import (
    "fmt"
)

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("cannot divide %d by zero", a)
    }
    return a / b, nil
}

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 10 by zero
challenge icon

Desafío

Principiante

En este desafío, practicarás la creación de mensajes de error formateados utilizando la función fmt.Errorf. Tienes un programa que valida un nombre de usuario, y necesitas crear un mensaje de error adecuado cuando el nombre de usuario no es válido.

El programa tiene un nombre de usuario predefinido que es demasiado corto (menos de 5 caracteres). Tu tarea es crear un mensaje de error formateado que incluya el nombre de usuario no válido y la longitud mínima requerida.

Hoja de referencia

Utiliza fmt.Errorf() para crear mensajes de error formateados con valores dinámicos:

import "fmt"

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("cannot divide %d by zero", a)
    }
    return a / b, nil
}

Pruébalo tú mismo

package main

import (
	"fmt"
)

func main() {
	// Nombre de usuario predefinido que es demasiado corto
	username := "bob"
	// Longitud mínima requerida
	minLength := 5
	
	// Comprobar si el nombre de usuario es válido
	if len(username) < minLength {
		// TODO: Crear un error formateado usando fmt.Errorf que incluya:
		// 1. El nombre de usuario no válido
		// 2. La longitud mínima requerida
		// Ejemplo de formato: "invalid username: [username] is too short, minimum length is [minLength]"
		err := // Tu código aquí
		
		// Imprimir el error
		fmt.Println(err)
	} else {
		fmt.Println("Username is valid!")
	}
}
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