2016-06-29 30 views
9

Bu Golang Yelp API package'u kullanmaya çalışıyorum. Bazı yapılarında, guregu's null package'da tanımlanan türleri kullanır.package'ın türü, satıcının paketinin türü olarak kullanılamaz

Bazı alanlarının null.Float değeri (i.e. this struct, which im trying to use) olduğu, Yelp API paketinde tanımlanan bir yapı bildirmek istiyorum. Programımda, hem Yelp API paketini hem de guregu'nın boş paketini içe aktarıyorum ve ip.Lat ve ip.Lat float64 ile yapısını bildirmeye çalışıyorum. (null.FloatFrom definition):

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

Ama programı çalıştırdığınızda, bana söyler:

1) git neden null paketini, ithal etmedi:

./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 

Ben 2 şey denedim null undefined olmaktan şikayetçi. 2) Doğrudan satıcıyı paketlemeyi denedim, bu da Go'nun bana use of vendored package not allowed olduğunu söylemesine neden oldu.

Bunu nasıl düzelteceğinizle ilgili bir fikrin var mı?

cevap

4

Buradaki çözüm, kullanmayı denediğim kütüphanenin bu tür bir olayın gerçekleşmesini önlemek için yeniden işlenmesi gerektiğini gösteriyor. kütüphaneyi değiştirmek için

iki olası yolları hiç

1) değil satıcıyı gibi görünüyor - bağımlılık belirli bir versiyonu olmaya ihtiyacı yoksa bu çalışır. 2) satıldı, ancak satıcı kütüphanesini halka açıkta bırakmayın. Kitaplıktaki bazı sarmalayıcı işlevleri oluşturun, böylece insanlar dolaylı olarak türleri oluşturabilirler.