GOROOT
- go语言的安装目录,下面放着内置包
GOPATH
- 用于go install,这个目录下包含3个文件夹,src、pkg、bin
- 用于go get,下载版本包,默认下载到GOPATH/src文件夹下
- 使用export GOPATH=`pwd`同时会设置go env中的GOPATH
GOMOD
- 解决gopath只能用于一个项目的问题,多个项目需要切换gopath
- 解决不同项目通过不同gopath引入同一组件的问题
- 引入GoModule之后,不再直接在GoPath目录进行编程,而是把GoPath作为一个第三方依赖包的仓库,真正的工作空间在GoModule目录下
- 无法下载国外版本包,需要设置代理
go env -w GOPROXY=https://goproxy.cn,direct,如果是1.13之前的版本就少一个direct - 包含module、go版本、依赖组件
export GO111MODULE="on"
如何使用
带git的项目
git clone、go mod init
不带git的项目
go mod init packagename
下载依赖
go mod download、go get、 go run、go build
拉取必须模块,移除不必要的
go mod tidy
但是如果tag的对应内容有更新,需要删除缓存
cd $GOPATH/pkg/mod;rm -rf *
更新依赖
方法一: 直接修改 go.mod 文件,然后执行 go mod download 方法二: go get packagename@v1.2.3,自动更新 go.mod 方法三: go run、go build 也会自动下载依赖
将依赖包下载到vendor目录
go mod vendor
替换本地包
- replace 可以是文件夹,也可以是另外一个package
module my-mod
require my/example/pkg v0.0.0
replace my/example/pkg v0.0.0 => github.com/example/pkg v0.0.0
- 文件夹
module my-mod
require my/example/pkg v0.0.0
replace my/example/pkg => ./pkg
go env 指令
- go语言的环境变量在这里
- GOARCH表示目标处理器架构
- GOBIN表示编译器和链接器的安装位置
- GOOS表示操作系统