Menu
Coddy logo textTech

Интерфейс `error`

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

В Go интерфейс error — это встроенный тип, представляющий состояния ошибок. Любой тип, реализующий метод Error(), удовлетворяет этому интерфейсу.

Вот определение интерфейса error:

type error interface {
    Error() string
}

Создайте пользовательский тип ошибки:

type MyError struct {
    Message string
}

func (e MyError) Error() string {
    return e.Message
}

func main() {
    err := MyError{Message: "something went wrong"}
    fmt.Println(err)
}

Результат будет следующим:

something went wrong
challenge icon

Задание

Легко

В этом испытании вы будете работать с интерфейсом error языка Go. Вам нужно создать пользовательскую ошибку с помощью функции errors.New() и затем проверить, существует ли ошибка.

В коде уже есть функция, которая возвращает ошибку. Ваша задача — проверить, не является ли ошибка nil, и вывести соответствующее сообщение.

Шпаргалка

Интерфейс error — это встроенный тип, который представляет состояния ошибок. Любой тип, реализующий метод Error(), соответствует этому интерфейсу:

type error interface {
    Error() string
}

Создание пользовательского типа ошибки:

type MyError struct {
    Message string
}

func (e MyError) Error() string {
    return e.Message
}

func main() {
    err := MyError{Message: "something went wrong"}
    fmt.Println(err) // Вывод: something went wrong
}

Используйте errors.New() для создания простых ошибок и проверки того, что ошибка не равна nil.

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

package main

import (
	"errors"
	"fmt"
)

func main() {
	// Эта функция возвращает ошибку
	err := generateError()
	
	// TODO: Проверьте, не равен ли err значению nil
	// Если err не равен nil, выведите: "Error occurred: " и сообщение об ошибке
	// ПОДСКАЗКА: Используйте оператор if, чтобы проверить, что err != nil
	
	
	// Эта строка выполнится только в том случае, если ошибка не возникла
	fmt.Println("Program completed successfully")
}

// Эта функция генерирует ошибку
func generateError() error {
	return errors.New("something went wrong")
}
quiz iconПроверьте себя

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

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