Go 基础环境搭建和环境变量详解

Go 的下载和安装,已经有很多文章介绍了,这里不再赘述,详情参见:

Go 的环境变量可以使用 go env 命令查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/zhaoyongqiang/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/zhaoyongqiang/go-workspace"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.10.2/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.10.2/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
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/k_/4_4w_0c909bg9xfdvx0s_8pw0000gn/T/go-build042190142=/tmp/go-build -gno-record-gcc-switches -fno-common"
  • GOARCH — 支持的处理器架构
  • GOBIN — go install 命令安装可执行文件的位置
  • GOCACHE
  • GOEXE
  • GOHOSTARCH
  • GOHOSTOS
  • GOOS
  • GOPATH
  • GORACE
  • GOROOT — Go 安装目录
  • GOTMPDIR
  • GOTOOLDIR
  • GCCGO
  • CC
  • CXX
  • CGO_ENABLED
  • CGO_CFLAGS
  • CGO_CPPFLAGS
  • CGO_CXXFLAGS
  • CGO_FFLAGS
  • CGO_LDFLAGS
  • PKG_CONFIG
  • GOGCCFLAGS

其中有两个变量和日常开发联系最紧密,一个是 GOROOT,一个是 GOPATH,所有变量的具体含义详见 https://golang.org/cmd/go/#hdr-Environment_variables

GOROOT

简而言之 GOROOT 就是 Go 的安装目录,如果一台机器上有多个 Go 版本并存就需要注意 GOROOT 的设置,不同的 Go 版本使用不同的目录,对应的 Go 项目正确设置 Go 版本。

GOPATH

GOPATH 是 Go 项目中最重要的一个目录,其决定了使用 Go 命令比如 go installgo get 要把执行文件和源码放到哪个位置,决定开发 Go 项目依赖包是如何导入的,可以说如果要开发完整的 Go 项目首先要设置的就是 GOPATH,官方详见 https://golang.org/cmd/go/#hdr-GOPATH_environment_variable。

GOPATH 的组成

  • src 源码文件目录,包括使用 go get 安装的第三包
  • pkg 编译打包之后的 lib,主要是 *.a 文件
  • bin 可执行文件,go install 命令会把可执行文件放入该目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
.
├── bin
│   ├── go-outline
│   ├── go-symbols
│   ├── gocode
│   ├── godef
│   ├── golint
│   ├── gopkgs
│   ├── goplay
│   ├── gorename
│   ├── goreturns
│   └── guru
├── pkg
│   └── darwin_amd64
│   ├── github.com
│   ├── go-tutorial
│   ├── golang.org
│   └── gopkg.in
└── src
├── github.com
│   ├── MichaelTJones
│   ├── acroca
│   ├── go-sql-driver
│   ├── golang
│   ├── haya14busa
│   ├── nsf
│   ├── ramya-rao-a
│   ├── rogpeppe
│   ├── skratchdot
│   ├── sqs
│   ├── uudashr
│   └── zhyq0826
├── golang.org
│   └── x
└── gopkg.in
└── mgo.v2

GOPATH 如何设定

GOPATH 的设定并没有严格规范,只要当前环境变量中可以找到正确的 GOPATH 目录即可,可以按照如下规则设定:

每个用户一个 GOPATH

为了开发方便,对于个人开发者来说,可以在当前用环境变量中设置 GOPATH,比如 linux 用户可以修改 .bash_profile 文件设置:

1
export GOPATH=$HOME/go

一个项目一个 GOPATH

如果是团队开发,往往会设计多个项目,每个项目的 Go 版本和第三方依赖都有差别,可以使用每个 Go 项目一个GOPATH,这样可以最大程度上降低开发中的包和版本冲突。

注意:GOPATH 可以设置多个值,也就是 GOPATH 允许设置多个目录,这种情况下使用 go get 安装的包默认放在第一个目录。

三月沙 wechat
扫描关注 wecatch 的公众号