我试着用这个Golang Yelp API package.在一些 struct 中,它使用guregu's null package中定义的类型.

我想声明一个在Yelp API包中定义的 struct ,其中一些字段的值为null.Float(i.e. this struct, which im trying to use).因此,在我的程序中,我导入了Yelp API包和guregu的null包,并try 声明struct,其中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         }

但当我运行程序时,它告诉我:

./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) 我还try 直接导入供应商提供的软件包,这导致Go告诉我use of vendored package not allowed.

你有什么办法解决这个问题吗?

推荐答案

这里的解决方案似乎是,我试图使用的库需要重新设计,以防止这种情况发生.

改变图书馆的两种可能方式似乎是

1)根本不是供应商-如果依赖项不需要是特定版本,则此方法有效.

2) 出售,但不要向公众公开出售的图书馆.在库中创建一些包装函数,以便人们可以间接创建类型.

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

Go相关问答推荐

Golang读写更接近于io.File

VS代码,Golang格式顽固的情况与switch / case

Golang内置打印(Ln)函数&S行为怪异

将DATE类型的SQL字段扫描到GO struct 字段

从带有嵌套括号的字符串中提取值

Go 是否提供了标准或事实上的方法来处理单个语句中的错误(即内联错误处理)?

为什么 mux.Vars() 返回空的 map[]

如何根据地址和大小打印字符串

更改多对多连接表的名称

由于 main.go 文件中的本地包导入导致构建 docker 容器时出错

GitHub 中 REST API 的 aws 凭证问题

甚至用天真的洗牌分配?

确保 Go 1.20 编译时的严格可比性?

有没有办法将 yaml node 添加到 golang 中现有的 yaml 文档中?

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

我如何解码 aes-256-cfb

如何在 Unmarshal 中使用泛型(转到 1.18)

防止在 Go 公用文件夹中列出目录

使用不安全的指针从 [] 字符串中获取值

go routine 和接收错误或成功的通道