2016-06-29 33 views
9

私はこれを使用しようとしていますGolang Yelp API package。いくつかの構造体では、それはguregu's null packageで定義された型を使用します。パッケージの種類を商品パッケージの種類として使用することはできません

Yelp APIパッケージで定義されている構造体を宣言したい場合、そのフィールドの一部はnull.Floatという値(i.e. this struct, which im trying to use)です。そこで私のプログラムでは、Yelp APIパッケージとgureguのヌルパッケージの両方をインポートし、ip.Latとip.Latをfloat64sとして構造体を宣言しようとします。 (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   } 

しかし、私はプログラムを実行すると、それは私に語った:

1)私はに行く原因nullパッケージをインポートしませんでした:

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

が、私は2つのことを試してみました nullについては不明です。 2)私はまた、直接包装されたパッケージをインポートしようとしました。これは、 use of vendored package not allowedを教えてください。

これを修正する方法についてのご意見はありますか?

答えて

4

私が使用しようとしているライブラリは、このようなことが起こらないように再加工する必要があると思われます。

ライブラリを変更するには、2つの可能な方法は

1のように見える)で、すべてのベンダーではない - 依存関係が特定のバージョンである必要がない場合は、この作品。

2)は販売されていますが、販売されたライブラリは一般に公開されません。ライブラリにいくつかのラッパー関数を作成して、人々が間接的に型を作成できるようにします。

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

関連する問題