Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmErNw 292 of 350 menu
◀ ▶

Создание ошибки в Go

Сбой можно оформить самим, а не ждать готовое значение из библиотеки. Пакет errors дает функцию New: она создает значение типа error с заданным текстом. Его возвращают вторым результатом, а вызывающий код проверяет err:

package main import ( "errors" "fmt" ) func main() { err := errors.New("message") fmt.Println(err != nil) // выведет true }

В учебных задачах удобно возвращать такую ошибку, когда параметр нарушает правило. Функция выводит число только для четного аргумента:

package main import ( "errors" "fmt" ) func requireEven(n int) error { if n%2 != 0 { return errors.New("even only") } fmt.Println(n) return nil } func main() { err := requireEven(3) if err != nil { fmt.Println("rejected") } }

Та же схема подходит, если деление на ноль проверяют вручную до операции /:

package main import ( "errors" "fmt" ) func safeDiv(a, b int) (int, error) { if b == 0 { return 0, errors.New("zero divisor") } return a / b, nil } func main() { val, err := safeDiv(8, 0) if err != nil { fmt.Println("cannot divide") } else { fmt.Println(val) } }

Сообщения в коде пишите на английском, как и имена переменных. Прочитать текст ошибки на экране разберем в следующем уроке.

Создайте функцию printIfPositive с параметром n. Для n <= 0 верните ошибку с сообщением "not positive". Иначе выведите n и верните nil.

В main вызовите printIfPositive(-2). При ненулевой ошибке выведите "bad".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить