В Go интерфейс error — это просто тип с методом Error() string. Чтобы вернуть объект типа error без использования пакета errors, можно определить собственный тип, реализующий этот интерфейс.
// Необходимо реализовать функцию,
В Go интерфейс error — это просто тип с методом Error() string. Чтобы вернуть объект типа error без использования пакета errors, можно определить собственный тип, реализующий этот интерфейс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
// Необходимо реализовать функцию, // которая бы возвращала ошибку без импорта пакетов из стандартной библиотеки или сторонних пакетов.
func Handle() (err error) { return }
Ответ
В Go интерфейс error — это просто тип с методом Error() string. Чтобы вернуть объект типа error без использования пакета errors, можно определить собственный тип, реализующий этот интерфейс.
Пример:
package main
import "fmt"
// Собственный тип ошибки
type MyError struct {
Msg string
}
// Реализация интерфейса error
func (e MyError) Error() string {
return e.Msg
}
func doSomething() error {
return MyError{Msg: "что-то пошло не так"}
}
func main() {
err := doSomething()
if err != nil {
fmt.Println(err.Error())
}
}
Таким образом, можно создавать ошибки без использования стандартного пакета errors.