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

一、安装Go

go下载地址:

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

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

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

go1.22.1.windows-amd64.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 (七牛镜像)

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。

相关推荐
h***06654 分钟前
【JSqlParser】Java使用JSqlParser解析SQL语句总结
java·开发语言·sql
代码or搬砖13 分钟前
Java Lambda 表达式全面详解
java·开发语言·python
这周也會开心23 分钟前
JDK1.8新增语法
java·开发语言
随风飘的云23 分钟前
es搜索引擎的持久化机制原理
后端
心随雨下25 分钟前
TypeScript泛型开发常见错误解析
java·开发语言·typescript
Se7en258130 分钟前
基于 MateChat 构建 AI 编程智能助手的落地实践
后端
郝学胜-神的一滴1 小时前
现代OpenGL窗口管理:GLFW从入门到实战
开发语言·c++·程序人生·图形渲染·个人开发
n***F8751 小时前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
w***37511 小时前
SpringBoot【实用篇】- 测试
java·spring boot·后端
谁刺我心1 小时前
C++三种智能指针unique、shared、weak
开发语言·c++