## 本节主要内容 * go语言环境的安装 * go环境变量(必读) ## go安装包下载地址 点击如下链接,下载对应系统版本的go安装包。 [go语言中文网 https://studygolang.com/dl](https://studygolang.com/dl) # Linux Or Mac 系统安装 1. 下载 ``` 右击<下载链接>-复制链接 wget https://dl.google.com/go/go1.1X.对应系统版本.tar.gz ``` 2. 解压 ``` tar -C /usr/local -xzf go1.1X.对应系统版本.tar.gz ``` 3. 修改环境变量 ``` vim ~/.bashrc 添加下面的export语句后,执行 source ~/.bashrc ``` ``` export GOROOT="/usr/local/go" export PATH="$PATH:$GOROOT/bin" export GOPATH="~/go" export GOBIN="~/go/bin" export PATH="$PATH:$GOBIN" #设置go代理,可以访问被墙的代码库 export GOPROXY=https://proxy.golang.org,direct ``` 4. 测试安装结果 执行如下两条命令,可以输出go版本或者go环境变量信息则为安装成功 ``` go version go env ``` # Windows系统安装 1. 下载与安装 点击推荐下载中的windows msi可安装文件 2. 测试安装结果 .msi 文件的安装默认会修改环境变量,安装完成之后可以打开cmd执行 ``` go version go env ``` 3.设置系统变量 因为msi文件安装时已经自动将go程序路径的放在环境变量path中,所以我们只需要关注GOPATH和GOPROXY环境变量的配置。 首先,要知道如何给windows添加环境变量 [windows 如何添加环境变量](https://jingyan.baidu.com/article/47a29f24610740c0142399ea.html) 然后添加相关的环境变量 ![](images/screenshot_1594736164905.png) ![](images/screenshot_1594736229950.png) ``` https://proxy.golang.org,direct ``` # 详解环境变量 go是通过环境变量完成的一系列系统的配置,并且使用 `go env`命令可以查看所有的go环境变量,其中有很多是系统默认的环境变量。我们这里重点讲解几个我们必须要了解的几个环境变量。 ![](images/screenshot_1594737318044.png) ### GOROOT `GOROOT`为 golang 的安装路径。 在`GOROOT/bin`这个路径下,存放的就是go的可执行文件以及一系列的go语言工具。 因此我们需要将`GOROOT/bin`这个路径放到系统的环境变量`PATH`中。这样才可以随处使用go 以及go的工具链,否则就需要使用绝对路径来执行go命令。 ### GOPATH `GOPATH`用于指定我们的开发工作区(workspace), 是存放源代码、测试文件、库静态文件、可执行文件的工作目录,这里需要使用绝对路径。 `GOPATH`可以同时指定多个工作区。例如: ``` export GOPATH=$home/go_workspace;$home/go_workspace2 ``` 在`GOPATH`对应的文件夹下,通常会分为三个子目录: * src * pkg * bin 其中,`src`目录放的是我们开发的源代码文件,或者是下载的源代码文件,其下面对应的目录被称为包,go的代码组织就是通过包来实现的; go的标准库代码是在`GOROOT/src`目录下,而这里的`GOPATH/src`存放的都是用户代码;<br/> `pkg`中的文件是对`src`中的源文件编译后产生的库静态文件;<br/> `bin`目录存放的是源代码编译后最终产生的可执行文件,经过go build、go install或者go get指令都会产生二进制的可执行文件; 不过如果设置了`GOBIN` 环境变量的话,编译产生的二进制可执行文件就会放在`GOBIN`文件夹下。 ### GOPROXY 如果你安装的go版本是13+之后的版本,那么这个环境变量是你必须要了解的。 `GOPROXY`是下一小节go module中会用到的,当使用go module构建应用程序的依赖时,会通过`GOPROXY`中配置的地址进行模块代码依赖的下载。 由于github、go官网等网站国内的访问速度特别慢,所以我们通常配置国内的`GOPROXY`地址,比较推荐的配置有: ``` (这里为linux、max系统配置的方式,windows系统需要配置环境变量) 阿里云: export GOPROXY=https://mirrors.aliyun.com/goproxy/ goproxy中国: export GOPROXY=https://goproxy.cn nexus社区: export GOPROXY=https://gonexus.dev 七牛云: export GOPROXY=https://goproxy.cn ``` ### GO111MODULE 是否开启go module支持的开关,通常配置为auto; 详细解释可以见下一小节go module的讲解 ### GOOS和GOARCH 这两个环境变量都是成对出现,并且在go安装完成后有默认的配置。`GOOS`为操作系统的类型,`GOARCH`为CPU架构,当交叉编译时就会用到这两个变量;例如,可以在windows上通过设置`GOOS`和`GOARCH`编译linux系统上可以执行的二进制文件。 ### 其他环境变量 其他环境变量通常我们不会使用,例如CGO开头的是和cgo相关的,cgo是指可以使用go调用c编译的链接库 或者 使用go编译出链接库给c语言调用;这些我们就暂时不做深入的了解了,真的使用到的话,我相信你也懂了!