2016-06-29 22 views
9

Tôi đang cố gắng sử dụng số Golang Yelp API package này. Trong một số cấu trúc của nó, nó sử dụng các loại được xác định trong guregu's null package.làm loại gói được cung cấp

Tôi muốn khai báo cấu trúc được xác định trong gói API Yelp, trong đó một số trường của nó có null.Float làm giá trị (i.e. this struct, which im trying to use). Vì vậy, trong chương trình của tôi, tôi nhập cả gói API Yelp và gói null của guregu và cố gắng khai báo cấu trúc, với ip.Lat và ip.Lat là 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   } 

Nhưng khi tôi chạy chương trình, nó nói với tôi:

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

tôi đã cố gắng 2 điều:

1) Tôi đã không nhập khẩu các null gói, khiến Tới khiếu nại về null không được xác định. 2) Tôi cũng đã cố gắng nhập trực tiếp gói hàng bị đóng góp, khiến cho Go cho tôi biết use of vendored package not allowed.

Bất kỳ Ý tưởng nào về cách sửa lỗi này?

Trả lời

4

Giải pháp ở đây dường như là thư viện mà tôi đang cố gắng sử dụng cần phải được làm lại để ngăn điều này xảy ra.

Hai cách thể thay đổi thư viện dường như

1) không nhà cung cấp ở tất cả - các công trình này nếu phụ thuộc không cần phải là một phiên bản cụ thể.

2) bị bán nhưng không hiển thị thư viện được bán cho công chúng. Tạo một số hàm bao bọc trong thư viện để mọi người có thể tạo các loại gián tiếp.

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

4

Tôi gặp vấn đề tương tự. Là một công việc xung quanh, tôi đã xóa thư mục nhà cung cấp của gói được liên kết và di chuyển nội dung của họ vào thư mục $ GOPATH của tôi.

Nguồn câu trả lời: https://github.com/prometheus/prometheus/issues/1720

Các vấn đề liên quan