Похоже, что ситуация sharedproject
обеспечивает зависимость github.com/go-openapi/spec
, в то время как myproject
получает как sharedproject
, так и github.com/go-openapi/spec
зависимости от
GOPATH
.
Теперь, когда вы ссылаетесь на github.com/go-openapi/spec
в sharedproject
, это относится к
пакет внутри каталога vendor, который технически отличается от
один и тот же пакет в GOPATH
, даже если оба имеют одинаковое содержимое. Поэтому, когда вы передаете
переменная типа *github.com/go-openapi/spec.Operation
от myproject
до
Функция в sharedproject
, пакет типа отличается от ожидаемого, и компиляция не удалась.
Чтобы решить эту проблему, убедитесь, что sharedproject
продается внутри myproject
. когда
если вы сделаете это, dep ensure
поместит копию sharedproject
без поставщика
каталог в каталог поставщика myproject
. После этого myproject
и sharedproject
будут использовать пакет github.com/go-openapi/spec
из каталога поставщиков myproject
.
Это затрудняет локальное развитие, если вы часто меняете sharedproject
и хотите
немедленно использовать эти изменения в myproject
(нельзя использовать dep
, пока изменения не будут переданы на пульт Git). Я бы обойти это, копируя
более sharedproject
в каталог поставщиков myproject
вручную без использования dep
(за исключением, конечно, каталога поставщиков). Будьте осторожны, чтобы не фиксировать эти скопированные вручную изменения в Git!