1. 预置变量
可以使用 go env
来查看,增加 -w
来修改
GOROOT
go 的安装目录,其下有 bin
,src
和 doc
等目录。
bin
: 放置 go 和 gofmt 等工具src
: 放置 go 标准库代码
GOPATH
工作空间,保存项目代码和第三方依赖包。可以设置多个。
- 使用
go get
下载的包默认会在第一个的src
目录下 - 使用
go install
时,在哪个GOPATH
中找到了这个包,就会其下的bin
目录生成可执行文件
其下有 bin
,pkg
和 src
3 个目录
bin
: 放置编译后的可执行文件pkg
: 放置编译后的包文件src
: 放置项目源文件
GOPROXY
设置下载代理,如设置七牛云为代理库 go env -w GOPROXY=https://goproxy.cn,direct
GO111MODULE
有三个值
GO111MODULE=off
,go 命令行不使用 module 功能,寻找依赖包的方式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找GO111MODULE=on
,go 命令行使用 modules,此时不会去 GOPATH 目录下查找GO111MODULE=auto
,默认值,go 命令行将会根据当前目录来决定是否启用 module 功能。这种情况下可以分为两种情形:- 当前目录在 GOPATH/src 之外且该目录包含 go.mod 文件
- 当前文件在包含 go.mod 文件的目录下面
2. 命令
go env
查看 go 默内置的环境变量,主要有几个 flag
-w
: 使用 NAME=VALUE 设置变量-u
: 查看变量值
go build
go run
go install
go build
: 主要检查是否会有编译错误,如果是一个可执行文件的源码(即是 main 包),就会直接生成一个可执行文件go run
: 编译并运行程序,它会产生一个临时文件,直接输出执行结果,方便调试go install
: 其先编译导入的包文件和主程序,之后将编译后生成的可执行文件放到 bin 目录下($GOPATH/bin
),编译后的包文件放到 pkg 目录下($GOPATH/pkg
)。
go mod
用来依赖管理和版本控制
go mod init <proj-name>
: 会在当前目录下生成一个 go.mod 文件,用来管理包
go get
获取代码、编译并安装
-d
: 只下载不安装-u
: 强制使用网络去更新包和它的依赖包-f
: 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用-fix
: 在获取源码之后先运行 fix,然后再去做其他的事情-t
: 同时也下载需要为运行测试所需要的包-v
: 显示执行的命令
3. 其他
go.mod
go.sum
使用 go mod init <proj-name>
后会生成这两个文件
go.mod
: 用于管理包目录和版本控制,文件创建后,它的内容将会被go toolchain
管理。其会在各类命令(如go get、go build、go mod
等)执行时,修改和维护go.mod
文件。go.sum
: 包含特定模块版本内容的预期加密哈希值,以确保项目所依赖的模块不会出现意外更改,不需要手工维护