基本上,大多数语言都有包管理工具。而go 也有,不过发展比较混杂。

在1.13版本之后,go 支持module管理。使得你不必将代码拘束“GOPATH”目录下面;同时将包下载至${GOPATH}/pkg而不是${GOPATH}/src; 去除版本问题。

GO111MODULE

启用go module 设置 环境变量 go111module

  • go env -w GO111MODULE=off

关闭module模式,编译时从GOPATH /vender 下寻找资源

  • go env -w GO111MODULE=on

开启module模式,编译时根据go.mod 寻找资源

  • go env -w GO111MODULE=auto

当项目建立在GOPATH/src 之外的目录时,且存在go.mod .开启on模式。否则应用off 模式

GOPROXY

设置代理

go env -w GOPROXY=https://goproxy.cn,direct

或者

go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

go mod命令

  • go mod download

    下载依赖至本地(默认${GOPATH}/pkg/mod)

  • go mod edit

编辑go.mod文件

  • go mod graph

打印模块依赖图

  • go mod init

初始化当前文件夹,创建go.mod。类似js中npm init

  • go mod tidy

增加缺少的module,去除无用的module

  • go mod vendor

将依赖复制到vendor

  • go mod verify

校验依赖

  • go mod why

解释为什么需要依赖

go.mod示例

  1. module myself/octoberCity/day01/mysql
  2. go 1.15
  3. require github.com/go-sql-driver/mysql v1.5.0