Неразрешенный тип в приемнике указателя - PullRequest
0 голосов
/ 10 мая 2018

У меня есть тип Process в библиотеке с именем lib.

Я пытаюсь импортировать эту библиотеку и добавить метод, связанный с типом из пакета lib.

func(p *lib.Process) DoSomething(pp *lib.Process) 

Но у меня есть ошибка unresolved type 'lib' внутри func(...). Меня это удивляет, потому что внутри DoSomething.

нет ошибки.

Как можно это преодолеть?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы не можете расширять типы, определенные в других пакетах. Что вы можете сделать, это встроить тип в другой пакет вашего собственного типа, а затем расширить свой собственный тип. Пример:

type MyProcess struct {
    lib.Process
}

func (p *MyProcess) DoSomething(...) {
    // ...
}

При использовании этого метода все существующие методы в lib.Process будут по-прежнему доступны, как и ваши.

0 голосов
/ 10 мая 2018

Вы не можете расширять существующие типы в другом пакете. Вы можете определить свой собственный тип или подпакет следующим образом.

type LibProcess lib.Process

func(p *LibProcess)DoSomething(pp *LibProcess) {}

псевдоним типа против определения

type LibProcess lib.Process // type defintion

type LibProcess = lib.Process // type alias
  • Определение типа создает новый, отдельный тип с тем же базовым типом и операциями, что и данный тип, и привязывает к нему идентификатор.

  • Объявление псевдонима связывает идентификатор с данным типом.

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