Задача · Функции как значения · урок 12 из 12
★ Задача: паника в ошибку
Напишите функцию func safeCall(f func()) (err error). Она вызывает f. Если f паникует, safeCall возвращает ошибку с текстом panic: <значение паники> — значение печатается так, как его печатает fmt.Println. Если паники не было, safeCall возвращает nil.
safeCall(func() {})→nilsafeCall(func() { panic("boom") })→ ошибкаpanic: boomsafeCall(func() { panic(42) })→ ошибкаpanic: 42
Ограничения: f вызывается ровно один раз; значение паники — любое: строка, число, ошибка или паника самого Go, например выход за границы среза; после пойманной паники следующий вызов safeCall работает как обычно.
Не добавляйте лишних импортов, если в задаче это прямо не сказано.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.