Menu
Coddy logo textTech

Criando Erros Formatados

Parte da seção Fundamentos do Journey de GO da Coddy — lição 107 de 109.

Criar Erros Formatados... permite incluir valores dinâmicos em mensagens de erro.

A função fmt.Errorf() cria erros com strings formatadas, de forma semelhante 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)
    }
}

A saída será:

Error: cannot divide 10 by zero
challenge icon

Desafio

Iniciante

Neste desafio, você praticará a criação de mensagens de erro formatadas usando a função fmt.Errorf. Você tem um programa que valida um nome de usuário e precisa criar uma mensagem de erro adequada quando o nome de usuário for inválido.

O programa possui um nome de usuário predefinido que é curto demais (menos de 5 caracteres). Sua tarefa é criar uma mensagem de erro formatada que inclua o nome de usuário inválido e o comprimento mínimo exigido.

Folha de consulta

Use fmt.Errorf() para criar mensagens de erro formatadas com 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
}

Experimente você mesmo

package main

import (
	"fmt"
)

func main() {
	// Nome de usuário predefinido que é curto demais
	username := "bob"
	// Comprimento mínimo exigido
	minLength := 5
	
	// Verifica se o nome de usuário é válido
	if len(username) < minLength {
		// TODO: Crie um erro formatado usando fmt.Errorf que inclua:
		// 1. O nome de usuário inválido
		// 2. O comprimento mínimo exigido
		// Exemplo de formato: "invalid username: [username] is too short, minimum length is [minLength]"
		err := // Seu código aqui
		
		// Imprime o erro
		fmt.Println(err)
	} else {
		fmt.Println("Username is valid!")
	}
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos