Menu
Coddy logo textTech

Создание форматированных ошибок

Часть раздела Основы путешествия по GO на Coddy — урок 107 из 109.

Создание форматированных ошибок... позволяет включать динамические значения в сообщения об ошибках.

Функция fmt.Errorf() создает ошибки с форматированными строками, аналогично 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)
    }
}

Вывод будет:

Error: cannot divide 10 by zero
challenge icon

Задание

Новичок

В этом испытании вы попрактикуетесь в создании форматированных сообщений об ошибках с помощью функции fmt.Errorf. У вас есть программа, которая проверяет имя пользователя, и вам нужно создать соответствующее сообщение об ошибке, если имя пользователя недействительно.

В программе заранее задано имя пользователя, которое слишком короткое (менее 5 символов). Ваша задача — создать форматированное сообщение об ошибке, которое включает недействительное имя пользователя и минимально требуемую длину.

Шпаргалка

Используйте fmt.Errorf() для создания отформатированных сообщений об ошибках с динамическими значениями:

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
}

Попробуйте сами

package main

import (
	"fmt"
)

func main() {
	// Предопределенное имя пользователя, которое слишком короткое
	username := "bob"
	// Минимально требуемая длина
	minLength := 5
	
	// Проверка, является ли имя пользователя допустимым
	if len(username) < minLength {
		// TODO: Создайте отформатированную ошибку с помощью fmt.Errorf, которая включает:
		// 1. Недопустимое имя пользователя
		// 2. Минимально требуемую длину
		// Пример формата: "invalid username: [username] is too short, minimum length is [minLength]"
		err := // Ваш код здесь
		
		// Вывод ошибки
		fmt.Println(err)
	} else {
		fmt.Println("Username is valid!")
	}
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы