继上篇系统地介绍go以后,接下来进入go的开发环境搭建系列。编写任何一门语言代码都离不开两样工具,语言开发包和代码编辑工具。python
今天先来聊聊如何安装golang。或许咱们都会以为这种事很是简单,不值得写篇文章介绍。最初我也是这么想的。但深刻了解下来,渐渐感受这也是一件颇有意思的事情。git
和其余语言的安装相似,go的安装咱们也能够采用三种方式进行,从简单到复杂依次是经过系统方式安装、官方二进制包安装和源码编译安装。github
不一样操做系统一般都会为go提供相应的软件安装方式。这种方式很大程度上简化了安装过程,能为咱们省去一些繁杂的步骤。下面分别介绍下不一样系统下的安装方式:golang
windowsshell
在windows下,软件安装一般可经过下载相似 setup.exe/msi 软件包来操做。按照导航的提示,不断执行 "下一步" "下一步" 便可完成。访问 下地地址 将看到以下内容:macos
选择其中的 "Microsoft Windows" 下载windows安装包。如今的系统基本都是64位的了,通常状况下不用考虑32/64位系统的问题。ubuntu
下载好了安装包,点击启动执行,接下来的步骤就是按导航提示一步步操做便可。有一点要注意的是,GO的默认安装在C:\GO,若是要修改默认安装路径,在见到以下界面时从新选择。vim
ubuntu/debianwindows
在debian或ubuntu上,咱们可以使用 apt-get 命令安装go。好比,在Ubuntu 16.04.5 LTS系统,使用以下命令安装:centos
sudo apt-get update // 视状况决定是否更新
sudo apt-get install golang-go
复制代码
若是是新建的系统,建议先update下软件源。不然可能会由于某些源异常而没法顺利安装。
centos/redhat
在centos或redhat上,咱们可使用yum命令安装go。好比,在CentOS 7.5上,使用以下命令安装:
$ yum epel-release
$ yum install golang
复制代码
先下载了epel-releaes源,可防止出现yum安装golang不支持或版本太旧的问题。
macos
在macos上,咱们可以使用pkg文件或homebrew安装go。
pkg的安装方式与windows的setup.exe/msi的相似,下载软件而后按导航 "下一步" "下一步" 便可完成。
来讲说如何使用homebrew安装。和yum和apt-get不一样,homebrew并不是mac系统自带,咱们须要先安装。进入homebrew官网,页面顶部便说明了安装的方式,命令以下:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
复制代码
接着安装go,命令以下:
$ brew install go
复制代码
很是简单就完成了安装。
系统安装方式的优势是简单。缺点是咱们不能保证系统提供给的版本必定能知足咱们的要求,好比上面ubuntu安装的go版本就较低,为go1.6。
接下来讲说如何使用二进制包安装。所谓二进制包,也就是已经编译好的包。这种安装方式在不一样的操做系统上步骤相似,考虑到windows用户最多,就以windows为例吧。
再次进入到下载页面,在列表可以下内容。由于我用的32位windows虚拟机,下载i386的包。
接着把下载的压缩包解压到某个文件夹,好比c:\Program Files下,进入查看,会发现其中已经包含了新的名为go的文件夹。
至此,二进制包的方式安装就完成了。由于二进制包是已编译好的软件包,因此不一样系统、CPU架构下须要下载与之相应的包。
咱们或许会想,就是移动个文件夹?是的,系统安装其实也就是作这些事情,不一样在于系统安装在简化了操做的同时也会针对性作一些设置,好比配置好环境变量、文件分类存放等。
这种安装方式的好处是与系统无关,一切控制权都掌握在本身身上,能限制咱们的只有本身的能力。
上篇文章说过,go在1.5版本已经移除了源码中所有的C代码,实现了自编译。所以,咱们能够用系统已有go来编译源码,从而实现新版的安装。
前面在ubuntu下,我用apt-get安装的golang比较老的go1.6版。下面经过它来编译新版go。
下载源码,最新版源码可点击 go1.12.2.src.tar.gz 下载。这里多说几句,go的源码托管在github上,地址:github.com/golang/go ,如想提早尝试新功能,可直接从github拉取最新的代码编译。这也是源码编译安装的一个好处。
源码下载完成后进入源码目录便可编译。注意,若是用虚拟机编译,要保证有充足的内存。
$ tar zxvf go1.12.2.src.tar.gz // 解压源码包
$ cd go/src
$ ./all.sh
复制代码
执行./all.sh便可完成编译安装,也挺简单的。这个过程会耗费一旦时间,要等待会。其实这里简化了不少细节,若是想仔细研究的话,能够去阅读官方文档 install go from source。
在安装完golang后,还需了解三个环境变量,分别是GOROOT、GOPATH、PATH。下面来分别介绍一下它们的做用。
GO安装的根目录。该变量在不一样的版本须要选择不一样的处理方式。
在 GO 1.10 以前,咱们须要视不一样安装方式决定是否手动配置。好比源码编译安装,安装时会有默认设置。而采用二进制包安装,在windows系统中,推荐安装位置为C:\GO,在Linux、freeBSD、OS X系统,推荐安装在/usr/local/go下。若是要自定义安装位置,必须手动设置GOROOT。若是采用系统方式安装,这一切已经帮咱们处理好了。
关于这个话题,推荐阅读:you-dont-need-to-set-goroot和分析源码安装go的过程。
在 GO 1.10 及之后,这个变量已经不用咱们设置了,它会根据go工具集的位置,即相对go tool的位置来动态决定GOROOT的值。说简单点,其实就是go命令决定GOROOT的位置。
关于这个话题,推荐阅读:use os.Executable to find GOROOT 和 github go issues 25002。
各个操做系统都存在的环境变量,用于指定系统可执行命令的默认查找路径,在不写完整路径状况下执行命令。
以Windows为例,我以前把go安装在 C:\Program Files\go目录下,即GOROOT为C:\Program Files\go,那么PATH变量可追加上C:\Program Files\go\bin。
若是有朋友了解python,能够将其类比为python的环境变量PYTHONPATH,用来设置咱们的工做目录,即编写代码的地方。包也都是从GOPATH设置的路径中寻找。
在go 1.8以前,该变量必须手动设置。go 1.8及以后,若是没有设置,默认在$HOME/go目录下,即你的用户目录中的go目录下。
介绍完三个变量,以个人mac为例介绍下设置方式吧。
类unix系统环境变量的设置方式都相似。使用export命令设置环境变量,并将命令加入到/etc/profile,该文件会在开启shell控制台的状况下执行。具体操做命令以下:
$ sudo vim /etc/profile
...
export GOROOT=/usr/local/go // 默认位置可不用设置,1.10版本后也能够不设置
export PATH=$PATH:$GOROOT/bin
export GOPATH=/Users/polo/work/go // 可设置多个目录
复制代码
通过以上步骤,环境变量配置完成,若是要马上启用环境变量,咱们须要重启下控制台。接着咱们能够用go env看一下变量的配置状况。
$ go env
GOARCH="amd64"
GOBIN="/usr/local/go/bin"
...
GOPATH="/Users/polo/Public/Work/go"
...
GOROOT="/usr/local/go"
复制代码
再简单介绍下go的目录结构。以windows为例,进入C:\Program Files\go将看到以下内容。
介绍几个比较主要的目录:
介绍到这里已经差很少了,接着来写一个简单的例子,即经典的Hello World。
首先,建立一个名为hello.go的文件,后缀必须为.go,内容以下:
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
复制代码
上面的代码主要由几部分组成,分别是
接下来,咱们可使用 go run 执行下这段代码,以下:
$ go run hello.go
Hello World
复制代码
执行输出 "Hello World"。
本篇文章从不一样系统和不一样方式角度出发,介绍了golang在各类场景下的安装方式。以后又详细介绍了几个在go中经常使用的环境变量,并以一个简单的例子结尾,最终完成了go的安装。