有三种不同的etcd-go包,它们是:
根据提交这里,所有官方代码都使用以下消息将包从go.etcd.io/etcd更改为go.etcd.io/etcd/v3:
此更改使etcd包与现有的用于模块版本控制的Go生态系统兼容。
但是我无法通过go.etcd.io/etcd/v3命令获得go get包。
那么这三个电子邮件包有什么区别呢?以及如何正确使用它们。
提前谢谢。
发布于 2020-08-31 14:05:02
客户端v3.4中存在一个已知的问题,即go get失败。见本期:https://github.com/etcd-io/etcd/issues/11154
虽然这个问题已经解决了,因为它(据说)是在v3.5中修复的,但是这个版本还没有发布(在编写这个版本时)。
上面有一些解决办法。为我们工作的是绕过etcd的未正确实现的go模块,并将版本直接锁定到go.mod文件中:
require go.etcd.io/etcd v0.0.0-20200520232829-54ba9589114f然后通过以下方式导入clientv3:
import "go.etcd.io/etcd/clientv3"发布于 2020-08-31 07:59:44
问题2的文件指向了这个链接
该包具有以下版本并提交散列
v0.5.0 (ae9734e)
问题3的文件指出了这个链接。
该包具有以下版本并提交散列
v3.3.0 (c20cc05)
etcd会在最近的版本中做一个突破性的更改,因此将模块路径更改为与旧路径不同。这是官方博客推荐的惯例。
看看这个博客。https://blog.golang.org/v2-go-modules虽然两者都指向相同的回购,但您必须导入这些版本,如下所示。您可以从存储库根目录中的go.mod文件中找到正确的模块路径。
导入"go.etcd.io/etcd/clientv3“import”go.etcd.io/etcd/v3/clientv3 3“
https://stackoverflow.com/questions/63664950
复制相似问题