2016-06-29 19 views
9

Próbuję użyć tego Golang Yelp API package. W niektórych swoich strukturach używa typów zdefiniowanych w guregu's null package.Typ paczki nie może być używany jako typ pakietu dostawcy

Chcę zadeklarować strukturę zdefiniowaną w pakiecie API Yelp, gdzie niektóre z jej pól mają wartość null.Float (i.e. this struct, which im trying to use). Dlatego w moim programie importuję zarówno pakiet API Yelp, jak i pakiet null guregu i próbuję zadeklarować strukturę, przy czym ip.Lat i ip.Lat to float64. (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   } 

Ale kiedy uruchomić program, to mówi mi:

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

Próbowałem 2 rzeczy:

1) Nie importować pakiet null, który spowodował Idź narzekać, że null jest niezdefiniowana. 2) Próbowałem również bezpośrednio importować pakiet vendored, co spowodowało, że Go powiedział mi use of vendored package not allowed.

Wszelkie pomysły na rozwiązanie tego problemu?

Odpowiedz

4

Rozwiązanie wydaje się, że biblioteka, którą próbuję użyć, musi zostać przerobiona, aby zapobiec temu.

Dwa możliwe sposoby zmiany biblioteki wydają się być

1) nie sprzedawca w ogóle - to działa, jeśli zależność nie musi być konkretna wersja.

2) sprzedane, ale nie wolno udostępniać publicznie udostępnionej biblioteki. Utwórz niektóre funkcje opakowania w bibliotece, aby ludzie mogli tworzyć typy pośrednio.

Zobacz this discussion about vendoring on reddit for more ideas/reasons why.