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: 包含特定模块版本内容的预期加密哈希值,以确保项目所依赖的模块不会出现意外更改,不需要手工维护
