最近几个月,或者最近一年,使用etcd做开发的朋友,如果你开启了go module的功能的话,没有出现翻车的现象吗?或者go get -u .
更新一下项目依赖试试看。
因为我使用visual studio code的方式是打开整个GOPATH
路径,而gopls对于整个GOPATH并不友好,非常的慢,所以我设置了全局变量GO111MODULE=off
,还是采用传统的老的库依赖方式。
但是我并不排斥使用go module,并且觉得它对解决库依赖的冲突至关重要,所以我一般在项目中也会是不是的开启go module,更新一下go.mod。但是目前看来go module的推广起来问题还是重重,主要包括下面几个原因:
go module本身的bug
使用go module的项目使用方式有问题
一些库没有采用go module
由于go module的一些bug,以及开源项目使用go module的错误姿势,go module模式下导致使用一些代码库困难重重。我们以etcd为例,看看目前使用etcd的翻车现场。
翻车例子
假如看了很多go module的励志文章,信心满满,准备使用etcd开发一些分布式的应用。很显然,相对于zookeeper在java生态圈的地位,在Go生态圈我们自然会选择etcd去做开发。
那么现在第一步,我们创建一个文件夹,生成go module文件:
123
|
➜ workspace mkdir abc && cd abc➜ abc go mod init example.com/mgo: creating new go.mod: module example.com/m
|
加入etcd
库:
1234567891011121314151617
|
➜ abc go get -u -v go.etcd.io/etcdgo: go.etcd.io/etcd upgrade => v3.3.20+incompatiblego: finding module for package github.com/coreos/etcd/etcdmaingo: found github.com/coreos/etcd/etcdmain in github.com/coreos/etcd v3.3.20+incompatiblego: finding module for package sigs.k8s.io/yamlgo: finding module for package google.golang.org/grpc/codesgo: finding module for package github.com/coreos/pkg/capnsloggo: finding module for package google.golang.org/grpc/metadata......go: found github.com/golang/groupcache/lru in github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57ego: go.etcd.io/etcd imports github.com/coreos/etcd/etcdmain imports github.com/coreos/etcd/etcdserver imports github.com/coreos/etcd/mvcc/backend imports github.com/coreos/bbolt: github.com/coreos/bb
|