тип пакета не может быть использован как тип продаваемого пакета

Я пытаюсь использовать этоGolang Yelp API пакет, В некоторых своих структурах он использует типы, определенные внулевой пакет Гурегу.

Я хочу объявить структуру, определенную в пакете API Yelp, где некоторые из его полей имеютnull.Float как значение (это структура, которую я пытаюсь использовать). Поэтому в своей программе я импортирую как пакет API Yelp, так и пустой пакет guregu и пытаюсь объявить структуру, где ip.Lat и ip.Lat являются float64s.(null.FloatFrom определение):

 33         locationOptions := yelp.LocationOptions{
 34                 ip.Zip,
 35                 &yelp.CoordinateOptions{
 36                         Latitude: null.FloatFrom(ip.Lat),
 37                         Longitude: null.FloatFrom(ip.Lon),
 38                 },
 39         }

Но когда я запускаю программу, она говорит мне:

./cli.go:36: cannot use "github.com/guregu/null".FloatFrom(ip.Lat) (type
"github.com/guregu/null".Float) as type "github.com/JustinBeckwith/go-
yelp/yelp/vendor/github.com/guregu/null".Float in field value

Я попробовал 2 вещи:

1) я не импортировалnull пакет, который вызвал жаловаться наnull быть неопределенным. 2) Я также попытался импортировать поставляемый пакет напрямую, что заставило Go сказать мнеuse of vendored package not allowed.

Любые идеи о том, как это исправить?

Ответы на вопрос(4)

/vendor и повторный запускgodep save ./... - Надеюсь, поможет.

Решение Вопроса

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

Два возможных способа изменить библиотеку:

1) вообще не поставщик - это работает, если зависимость не должна быть конкретной версией.

2) вендор, но не выставляйте вендорную библиотеку на всеобщее обозрение. Создайте некоторые функции-оболочки в библиотеке, чтобы люди могли создавать типы косвенно.

Увидетьэто обсуждение о продаже на Reddit для большего количества идей / причин, почему.

тавщика связанного пакета и переместил их содержимое в мою папку $ GOPATH.

Источник ответа:https://github.com/prometheus/prometheus/issues/1720

/vendor решена. С помощьюgovendor get xxxx

Ваш ответ на вопрос