当我们说 Go 的环境变量的时候意味着什么
一. 理解 Go 的环境变量
当我们安装好 go 之后我们输入 go env,就可以查看go的环境变量,大部分都是默认
caoshuaideMacBook-Pro3:~ caoshuai$ go env
GOARCH="amd64"
GOBIN="/Users/caoshuai/go/bin"
GOCACHE="/Users/caoshuai/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/caoshuai/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.11/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.11/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/6r/q12gwn794jv9dn3x8kywcp1c0000gn/T/go-build786818582=/tmp/go-build -gno-record-gcc-switches -fno-common"
1. GOROOT
该环境变量的值为 Go 语言的当前安装目录。
2. GOPATH
该环境变量的值为 Go 语言的工作区的集合(意味着可以有很多个)。工作区类似于工作目录。每个不同的目录之间用:分隔。
工作区是放置 Go 源码文件的目录。一般情况下,Go 源码文件都需要存放到工作区中。
工作区一般会包含3个子文件夹,自己手动新建以下三个目录:src 目录,pkg 目录,bin 目录。
bin 目录里面存放的都是通过 go install 命令安装后,由 Go 命令源码文件生成的可执行文件( 在 Mac 平台下是 Unix executable 文件,在 Windows 平台下是 exe 文件)。
注意:有两种情况下,bin 目录会变得没有意义。
当设置了有效的 GOBIN 环境变量以后,bin 目录就变得没有意义。
如果 GOPATH 里面包含多个工作区路径的时候,必须设置 GOBIN 环境变量,否则就无法安装 Go 程序的可执行文件。
pkg 目录是用来存放通过 go install 命令安装后的代码包的归档文件(.a 文件)。归档文件的名字就是代码包的名字。所有归档文件都会被存放到该目录下的平台相关目录中,即在 $GOPATH/pkg/$GOOS_$GOARCH 中,同样以代码包为组织形式。
这里有两个隐藏的环境变量,GOOS 和 GOARCH。这两个环境变量是不用我们设置的,系统就默认的。GOOS 是 Go 所在的操作系统类型,GOARCH 是 Go 所在的计算架构。平台相关目录是以
$GOOS_$GOARCH 命名的,Mac 平台上这个目录名就是 darwin_amd64。
src 目录是以代码包的形式组织并保存 Go 源码文件的。每个代码包都和 src 目录下的文件夹一一对应。每个子目录都是一个代码包。
pkg 目录是用来存放通过 go install 命令安装后的代码包的归档文件(.a 文件)。归档文件的名字就是代码包的名字。所有归档文件都会被存放到该目录下的平台相关目录中,即在 $GOPATH/pkg/$GOOS_$GOARCH 中,同样以代码包为组织形式。
这里有两个隐藏的环境变量,GOOS 和 GOARCH。这两个环境变量是不用我们设置的,系统就默认的。GOOS 是 Go 所在的操作系统类型,GOARCH 是 Go 所在的计算架构。平台相关目录是以
$GOOS_$GOARCH 命名的,Mac 平台上这个目录名就是 darwin_amd64。
3.GOBIN
该环境变量的值为 Go 程序的可执行文件的目录。
4.PATH
为了方便使用 Go 语言命令和 Go 程序的可执行文件,需要添加其值。追加的操作还是用:分隔。
export PATH=$PATH:$GOBIN