包的类型不能用作供应商的包的类型

我正在尝试使用此Golang Yelp API软件包。在某些结构中,它使用guregu的null包中定义的类型。

我想声明一个在Yelp

API包中定义的结构,其中的某些字段null.Float作为值使用(即,该结构,我正在尝试使用)。因此,在我的程序中,我同时导入了Yelp

API包和guregu的null包,并尝试使用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

我尝试了两件事:

1)我没有导入null软件包,这导致Go抱怨null未定义。2)我也尝试直接导入供应商的软件包,这导致Go告诉我use of vendored

package not allowed

有想法该怎么解决这个吗?

回答:

这里的解决方案似乎是我正在尝试使用的库需要重新设计,以防止发生这种情况。

更改库的两种可能方法似乎是

1)完全没有供应商-如果依赖项不需要是特定版本,则可以使用。

2)供应商,但不要将供应商库公开。在库中创建一些包装函数,以便人们可以间接创建类型。

有关更多想法/原因,请参阅有关在reddit上出售商品的讨论。

以上是 包的类型不能用作供应商的包的类型 的全部内容, 来源链接: utcz.com/qa/400837.html

回到顶部