Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go环境变量配置 GOROOT GOPATH

Go环境变量配置,及GOROOT、GOPATH的区别小结

作者:h_and_g

本文主要介绍了Go环境变量配置,及GOROOT、GOPATH的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、安装Go

go下载地址:

https://golang.google.cn/dl/

windows下载安装,有两种方式。解压和直接安装

方式一:直接下载安装包。以.msi结尾的文件。例如:

go1.22.1.windows-amd64.msi 

下载后,双击后一直点下一步即可安装成功。

方式二:下载压缩包文件,直接解压。解压后配置环境变量即可。例如:

下载完成,放到自己电脑的目录里面,然后解压,加压后得到如下文件:

二、配置Go环境变量

右击电脑 -> 属性  -> 高级系统设置  -> 环境变量。打开环境变量设置窗口

增加:增加两个环境变量: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,如果输出如下图所示,则安装成功。

#查看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 (七牛镜像)

或 https://mirrors.aliyun.com/goproxy(阿里云镜像)

配置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。 

到此这篇关于Go环境变量配置,及GOROOT、GOPATH的区别小结的文章就介绍到这了,更多相关Go环境变量配置 GOROOT GOPATH内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文