go: Как нормально работает функция с типом возвращаемого значения, отличным от объявления, в golang - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в golang программировании, и я изучаю интерфейсы в go.

Когда гуглил, я наткнулся на этот блог в лабораториях Ардана. Приведенный ниже фрагмент находится в списке 5 . Полный код находится на go площадке здесь

type errorString struct {
    s string
}

func New(text string) error {
    return errorString{text}
}

В методе New оператор return возвращает структуру типа errorString, но объявление функции говорит, что тип должен быть error. Приведенный выше код не выдает никакой ошибки. Он компилируется и работает нормально.

Когда я изменил метод, как показано ниже, он все еще работает нормально.

func New(text string) errorString {
    return errorString{text}
}

Как этот несовместимый тип работает в go?

1 Ответ

3 голосов
/ 26 апреля 2020

Тип error является типом интерфейса. Вот объявление интерфейса:

type error interface {
    Error() string
}

errorString является реализацией интерфейса ошибки. Вот почему он работает для errorString типа.

Подробнее об интерфейсе можно узнать здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...