Задачи на ошибки в Go. Часть 2
Сделайте иерархию ошибок для API через обёртку fmt.Errorf и %w.
Используйте if err != nil сразу после вызова функции.
Используйте errors.Is для проверки типа ошибки.
Используйте errors.As для извлечения конкретной ошибки.
Сделайте функцию safeDivide с возвратом (float64, error).
Обработайте несколько разных ошибок в одной функции.
Используйте defer и Close для файлового ресурса.
Сделайте повтор вызова через проверку error в цикле.
Сделайте функцию validateAge с возвратом error при неверном возрасте.
Сделайте константы ошибок через var Err... = errors.New(...).
Сравните возврат error и использование panic.