包的类型不能用作供应商的包的类型
我正在尝试使用此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