Напиши функцию, которая возвращает ошибку. Импортировать нельзя ничего:
ни errors, ни fmt, вообще никаких пакетов.
type MyError struct {
Msg string
}
// fabricate возвращает ошибку с текстом msg.
func fabricate(msg string) error
Требования
fabricate(msg) возвращает не-nil ошибку, у которой Error() равен msg.
- Под интерфейсом
error лежит *MyError: вызывающий код может достать
его через errors.As или type assertion.
- В файле решения нет ни одного
import.
Пример
err := fabricate("disk is full")
fmt.Println(err) // disk is full
// check возвращает *MyError с текстом "check failed", если fail == true,
// и nil, если fail == false.
func check(fail bool) error
- При
fail == false результат должен быть равен nil: check(false) == nil.
Устно: почему var e *MyError; return e даёт err != nil? Как устроен
интерфейс внутри?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.