go build 3种方式

GO111MODULE=off,go会从vendor和GOPATH寻找包
GO111MODULE=on,go不会从vendor和GOPATH寻找包,直接加载go. mod加载包

  • 通过vendor 编译
    0:GO111MODULE=off
    1:go get -u -v github. com/kardianos/govendor
    2:govendor add +e(生成vendor文件)
    3:go build main. go

  • 通过mod编译
    0:GO111MODULE=on
    1:go mod init (生成go.mod文件)
    2:go build main. go

  • 通过glide文件
    0:GO111MODULE=off
    1:brew install glide (mac需要安装)
    2:glide init (生成glide.yaml)
    3:glide install
    4:go build main. go

go build遇到的坑

tree目录详情
tree root
.
|-- README
| |-- animal
| |-- tiger
| |-- cat
| |-- dog

操作过程

修改根目录animal下的代码,cat在go build时用的go.mod还是旧的
报错如下:
#github.com/coreos/etcd/clientv3/balancer/picker
/Users/didi/go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/picker/err.go:37:44: undefined: balancer.PickOptions
/Users/didi/go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/picker/roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
#github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
/Users/didi/go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption
/Users/didi/go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:182:31: undefined: resolver.ResolveNowOption

原因分析

原因:根目录的go.mod文件的etcd导入和当前目录的go.mod文件的etcd导入冲突
解决:删除根目录的mod文件

解决方式

修改cat的mod版本号为修改后的分支名,这里注意必须先提交到git才能使用,这里用起来有些别扭,
可以通过replace用本地的最新版代替,在根目录下创建mod只写go版本号等信息,然后replace gihub.com/amber/xxx => /Users/amber/go/src/xxx
这样即使没提交到git上,仅修改本地代码也可以build最新代码

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值