Интерфейс `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Задание
ЛегкоВ этом задании вы будете работать с интерфейсом error языка Go. Вам нужно создать пользовательскую ошибку с помощью функции errors.New(), а затем проверить, существует ли ошибка.
В коде уже есть функция, которая возвращает ошибку. Ваша задача — проверить, что ошибка не равна nil, и вывести соответствующее сообщение.
Попробуйте сами
package main
import (
"errors"
"fmt"
)
func main() {
// Эта функция возвращает ошибку
err := generateError()
// TODO: Проверьте, что err не равен nil
// Если err не равен nil, выведите: "Error occurred: " за которым следует сообщение об ошибке
// HINT: Используйте оператор if для проверки, что err != nil
// Эта строка выполняется независимо от того, произошла ли ошибка
fmt.Println("Program completed successfully")
}
// Эта функция генерирует ошибку
func generateError() error {
return errors.New("something went wrong")
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода11Составные типы: Срезы
Введение в срезыОбъявление литералов срезовСоздание срезов с помощью `make`Длина и емкость срезаДоступ к элементам срезаДобавление элементовПолучение срезов из существующих срезов/массивовИтерация по срезамКопирование срезовИтоги: Динамические списки14Основы обработки ошибок
Концепция ошибокИнтерфейс `error`Функции, возвращающие ошибкиПроверка ошибокСоздание простых ошибокСоздание форматированных ошибокОсновы обработки ошибокИтоги — решение проблем3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений