go modules
环境配置
1.13 以后
go env -w GOPROXY=https://goproxy.cn,direct
使用 go env -w 将环境变量加到配置文件中。和 .zshrc 或 .bash_profile 解耦
1.13以前
正确配置 GOROOT
# go
# export export GO111MODULE=on # 三个状态 off on auto ,v1.11默认为auto, v1.12 默认on. on表示必须使用module依赖,才在src/ 目录下可以使用module
export GOROOT="/usr/local/go"
export GOBIN="/Users/fanjinlong/go/bin"
# export GOPATH=/Users/username/code/go #工作区,存放go源码文件的目录
export PATH=PATH:GOROOT/bin:$GOBIN
# # export GOPROXY="https://mirrors.aliyun.com/goproxy/,direct"
# export GOPROXY=""
# export CGO_CFLAGS_ALLOW='-Xpreprocessor' #cgo
初始化 同时 确定了项目的绝对目录路径
go mod init v5u.win/projectapi
生成 go.mod
导入包:import "v5u.win/projectapi/src/app/service"
添加依赖
go mod tidy
生成 go.sum 自动添加依赖关系到 go.mod
go run main.go
下载依赖包
go mod download github.com/pelletier/go-toml
Tips:
- 不能在 golib/src 下创建项目
- 在 Go1.11 版本下,GOPATH 目录中的项目默认是禁用 Go Module 的,需要手动开启
- export GOPROXY=”https://athens.azurefd.net” // 微软提供的公共代理
- export export GO111MODULE=on // 必须使用module依赖,在src/ 目录下可以使用module
常用命令
go mod tidy //拉取缺少的模块,移除不用的模块。
go mod download //下载依赖包
go mod graph //打印模块依赖图
go mod vendor //将依赖复制到vendor下,目前貌似只会下载你代码中引用的库,而不是go.mod中定义全部的module。坑
go mod verify //校验依赖
go mod why //解释为什么需要依赖
go list -m -json all //依赖详情
go clean -modcache 清除缓存