我正在尝试使用此Golang Yelp API软件包。在某些结构中,它使用guregu的null包中定义的类型。
我想声明一个在Yelp API包中定义的结构,其中的某些字段null.Float作为值使用(即,该结构,我正在尝试使用)。因此,在我的程序中,我同时导入了Yelp API包和guregu的null包,并尝试使用ip.Lat和ip.Lat为float64s声明该结构。(null.FloatFrom定义):
null.Float
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。
null
use of vendored package not allowed
有想法该怎么解决这个吗?
这里的解决方案似乎是我正在尝试使用的库需要重新设计,以防止发生这种情况。
更改库的两种可能方法似乎是
1)完全没有供应商-如果依赖项不需要是特定版本,则可以使用。
2)供应商,但不要将供应商库公开。在库中创建一些包装函数,以便人们可以间接创建类型。
有关更多想法/原因,请参阅有关在reddit上出售商品的讨论。