go版本要求:>= 1.11

优势

项目不必放置在GOPATH/src下

项目代码与依赖库代码分离

主要操作

初始化go项目

  1. mkdir gomod_demo
  2. go mod init gomod_demo
  3. # 或者带上完整组织结构信息
  4. go mod init my.company.com/my.team/gomod_demo

代理

  1. # 也可使用其它代理,如:https://goproxy.io
  2. export GOPROXY="https://mirrors.aliyun.com/goproxy/"
  3. # go 版本 >= 1.13
  4. export GOPRIVATE=*.my.company.com

私有仓库

先配置git:vim ~/.gitconfig,增加

  1. [url "ssh://git@my.company.com"]
  2. insteadOf = http://my.company.com

编译

go build会自动下载依赖包,依赖包默认放在:$GOPATH/pkg/mod/cache/download

私有仓库

对于内部代码,可以使用 go get -v -insecure my.company.com/my.team/another_repo下载依赖

生成vendor

想象如果在打包节点上进行build,也需要重复下载内部或者外部包,会有额外的时间开销。为了加速build,可以在项目目录下建立vendor目录,放置所有依赖库的代码 go mod vendor
之后可跳过依赖包下载直接进行 build:go build -mod=vendor

参考