通过执行go help environment命令打印输出go命令识别的所有环境变量的信息列表。
go命令及其调用的工具会参考环境变量进行配置。如果环境变量未设置,go命令将使用合理的默认值。要查看环境变量<NAME>的值,请运行“go env<NAME>”。要更改默认设置的值,请运行“go env -w <NAME>=<VALUE>”。根据操作系统的报告,使用go env w命令更改的默认值将记录在每个用户的家目录中一个存储go环境变量的配置文件中,os.UserConfigDir函数的返回每个用户配置目录的路径。配置文件的路径可以通过设置环境变量GOENV来更改,go env GOENV命令可以打印输出当前设置的配置文件的路径,但无法通过go env -w来更改配置文件的路径。
有关go env命令可以通过go help env查看它的用法。
一、通用的环境变量
GO111MODULE:控制go命令是运行于模块模式还是GOPATH模式。值可以是off、on或auto。
GCCGO:为运行go build -compiler=gccgo设置的gccgo命令。
GOARCH:Go代码要编译到的CPU架构,例如amd64、386、arm、ppc64等。
GOBIN:运行go install命令安装某个命令到的目录的绝对路径。可以执行go list -f '{{.Target}}'命令查看当前项目的默认安装路径
GOCACHE:是一个目录的绝对路径,go命令将在该目录缓存信息以供未来构建程序使用。
GOMODCACHE:是一个目录的绝对路径,go命令把下载的模块缓存在该目录里。
GODEBUG:启用多种调式方式。运行go doc runtime查看相关信息。
GOENV:是一个文件的绝对路径,Go环境变量存储在该文件里。不能使用go env -w命令改变GOENV的值。可以设置GOENV=off来禁用默认的该配置文件。
GOFLAGS:默认会应用于go命令的通过-flag=value设置的以空格分隔的一个选项列表,当然当前go命令会忽略不认识的选项。每个条目都必须是一个独立的选项。由于条目以空格分隔,因此选项的值本身不得包含空格。命令行上列出的选项将于该列表之后应用,因此某些选项会覆盖该列表里给出的选项。
GOINSECURE:以逗号分隔的模块路径前缀的glob模式列表(见Go的path.Match语法),这些模块应始终以不安全的方式获取。仅适用于直接获取的依赖项。GOINSECURE不禁用校验和数据库验证,可以通过GOPRIVATE或GONOSUMDB实现这一点。
GOOS:编译Go代码到的操作系统,例如linux、darwin、windows、netbsd等。
GOPATH:更多信息参见go help gopath的输出信息。
GOPROXY:Go模块的代理服务的地址,更多信息见 https://golang.org/ref/mod#environment-variables和https://golang.org/ref/mod#module-proxy。
GOPRIVATE, GONOPROXY, GONOSUMDB:逗号分隔的模块路径前缀的一个列表(具体语法见path.Match函数的文档),这些模块总是被直接获取或者不应该使用校验和数据库验证模块的完整性。
GOROOT:Go在操作系统里的安装路径。
GOSUMDB:使用的校验和数据库验的名字以及它的公钥和URL。
GOTMPDIR:一个目录的路径,go命令在该目录里存储临时代码文件、包和二进制文件。
GOVCS:版本控制命令的一个列表,可能被用于匹配相应的版本控制的服务器,更多信息见go help vcs的输出。
GOWORK:在模块模式下,使用给定的go.work文件作为工作空间文件。默认情况下,或者当GOWORK环境变量的值为“auto”时,go命令在当前目录中搜索名为go.work的文件,然后搜索子目录,直到找到一个go.work文件为止。如果找到一个有效的go.work文件,则其内指定的模块将共同作为主(main)模块。如果GOWORK处于“off”状态,或者在“auto”状态下找不到go.work文件,则不启用工作空间模式。
二、cgo使用的环境变量
AR:使用gccgo编译器构建时用于操作库文件的命令。默认值为“ar”。
CC:用于编译C代码的命令。
CGO_ENABLED:是否启用cgo命令。0或1。
CGO_CFLAGS:当编译C代码时,传递给编译器的标志。
CGO_CFLAGS_ALLOW:一个正则表达式,指定允许出现在#cgo CFLAGS源代码指令中的其他标志。不适用于CGO_CFLAGS环境变量。
CGO_CFLAGS_DISALLOW:一个正则表达式,指定不允许出现在#cgo CFLAGS源代码指令中的其他标志。不适用于CGO_CFLAGS环境变量。
CGO_CPPFLAGS, CGO_CPPFLAGS_ALLOW, CGO_CPPFLAGS_DISALLOW:类似于CGO_CFLAGS、CGO_CFLAGS_ALLOW和CGO_CFLAGS_DISALLOW,但是用于C++预处理器。
CGO_CXXFLAGS, CGO_CXXFLAGS_ALLOW, CGO_CXXFLAGS_DISALLOW:类似于CGO_CFLAGS、CGO_CFLAGS_ALLOW和CGO_CFLAGS_DISALLOW,但是用于C++编译器。
CGO_FFLAGS, CGO_FFLAGS_ALLOW, CGO_FFLAGS_DISALLOW:类似于CGO_CFLAGS、CGO_CFLAGS_ALLOW和CGO_CFLAGS_DISALLOW,但是用于Fortran编译器。
CGO_LDFLAGS, CGO_LDFLAGS_ALLOW, CGO_LDFLAGS_DISALLOW:类似于CGO_CFLAGS、CGO_CFLAGS_ALLOW和CGO_CFLAGS_DISALLOW,但是用于连接器。
CXX:用于C++代码的命令。
FC:用于Fortran代码的命令。
PKG_CONFIG:pkg-config工具的路径。
三、计算机体系结构相关的环境变量
GOARM:
