1. go的依赖管理发展

- GOPATH 所有的依赖都放置在同一路径下,可以复用下载的依赖,但是当不同项目需要依赖不同版本的依赖时,就很容易出现冲突问题。
- govendor 解决了依赖库版本不一致的问题,但是不好控制(了解即可)
- go mod 使用go.mod文件管理以来的版本,通过go get下载依赖
2. go.mod 文件分析
module xx/xx/xx/v2/v2
go 1.16
require()是项目需要的其他依赖:
xx/xx/xx v1.3.3xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbedxx/xx/xx v0.3.0 // indirectxx/xx/xx v2.2.1+incompatible
exclude()
replace xx/xx/xx => xx/xx v1.3.3
retract()
3. go mod依赖下载工具
go get xx/xx/x@${parameter}
${parameter}可以选择的参数如下:

go mod tidy 根据go.mod文件添加或者删除项目所需要的依赖
4. 可能出现的问题汇总
go get -u xx/xx/x
这个操作会升级依赖的依赖,有可能会引发依赖版本不兼容问题导致的编译不通过,比如thrift的0.13与0.14不兼容。
循环依赖问题:

要注意避免循环依赖问题。