一、安装Go
go下载地址:
windows下载安装,有两种方式。解压和直接安装
方式一:直接下载安装包。以.msi结尾的文件。例如:
下载后,双击后一直点下一步即可安装成功。
方式二:下载压缩包文件,直接解压。解压后配置环境变量即可。例如:
下载完成,放到自己电脑的目录里面,然后解压,加压后得到如下文件:
二、配置Go环境变量
bash
右击电脑 -> 属性 -> 高级系统设置 -> 环境变量。打开环境变量设置窗口
增加:增加两个环境变量:GOROOT、GOPATH
GOROOT:GO的安装目录,相当于java中的jdk
GOPATH:GO的项目工作目录,以后开发的代码就写到这个文件夹中。
配置GOROOT:
GOPATH和GOROOT的配置略有不同,我建议配置两个GOPATH目录,第一个用于放 Go 语言的第三方包,第二个用于放自己的开发代码。我们来新建GOPATH。点击系统变量下的新建,在变量名一栏输入GOPATH,在变量值一栏输入任意两个目录,中间用英文分号隔开。
配置GOPATH
然后将新建的GOROOT配置到 Path 这个环境变量中去,在系统变量中找到 Path,点击编辑->新建,输入%GOROOT%\bin,点击确定。并将所有母窗口的确定全部点下,确保环境变量生效。
这样就配置完了,一路点击确定,直到桌面;
检查是否配置成功。
windows+R 输入 cmd 打开终端,输入go version,如果输出如下图所示,则安装成功。
bash
#查看Go版本
go version
#查看Go环境变量
go env
配置GO111MODULE、GOPROXY、GOSUMDB
GO111MODULE:为啥是111呢,这是冲go的1.11版本增加的一个功能。用于管理第三方包的,如果这个开启的话,gopath这个变量基本上就用不到了。
Go默认的GOPROXY的值是:GOPROXY=https://proxy.golang.org,direct。这个goproxy在使用go get安装第三方库的时候会报错,导致无法下载成功,所以必须要修改一下。比如改为:https://goproxy.io,direct (七牛镜像)
配置go变量的一些命令:
#开启mod模式(项目管理需要用到)
go env -w GO111MODULE=on
#重新设置成七牛镜像源(推荐)或阿里镜像源(用原有的会比较慢)
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy
#关闭包的MD5校验
go env -w GOSUMDB=off
#查看环境变量
go env
三、GoRoot
GOROOT是go的安装路径。GOROOT目录下有bin、doc、src等。如下图:
四、GoPath
GOPATH:是开发的工作目录。用于保存编译后的二进制文件。go get命令和go install命令会下载go的代码到GOPATH中。
使用GOPATH时,项目中import引用的第三方包,首先会从GOROOT/src下搜索,如果搜索不到,会到GOPATH/src目录下搜索。
举个例子吧:
比如go项目中,应用了如下第三方包:
import "Go-Player/src/chapter17/models"
第一步:Go会先去GOROOT/src目录中查找,很显然它不是标准库的包,没找到。
第二步:继续在GOPATH/src目录去找,准确说是GOPATH/src/Go-Player/src/chapter17/models这个目录。
如果该目录不存在,会报错找不到package。
在使用GOPATH管理项目时,需要按照GO寻找package的规范来合理地保存和组织Go代码。
五、go-mod
开启GO111MODULE时,即GO111MODULE=on,再项目中引用第三方包时,仍然使用GOPATH的方式进行引用,这时在引用时会报错。
GO111MODULE 有三个值:off, on和auto(默认值)。
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。
这种情况下可以分为两种情形:
当前目录在GOPATH/src之外且该目录包含go.mod文件,即使用go mod对项目的第三方依赖进行管理,不再使用gopath的方式
当前文件在包含go.mod文件的目录下面。
当modules 功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module。