当前位置: 首页 > news >正文

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。 

http://www.lryc.cn/news/321995.html

相关文章:

  • 爬虫系列-CSS基础语法
  • 获取比特币和莱特币的实时价格
  • Axure案例分享—折叠面板(附下载地址)
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(五)
  • 单片机-- 数电(3)
  • 基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】计算机毕业设计
  • 「数据分析」之零基础入门数据挖掘
  • 【力扣】383.赎金信
  • 【Linux】传输层协议:TCP/UDP
  • Linux运维_Bash脚本_构建安装Systemd-250
  • 中国城市统计年鉴、中国县域统计年鉴、中国财政统计年鉴、中国税务统计年鉴、中国科技统计年鉴、中国卫生统计年鉴​
  • C++:继承:面向对象编程的重要特性
  • oneMKL--FFT 基本使用
  • 软件测试工程师面试汇总Linux篇
  • 【python】使用代理IP爬取猫眼电影专业评分数据
  • C/C++中枚举(enum)和结构体(struct)的异同
  • 【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!
  • 部署prometheus+Grafana可视化仪表盘监控服务
  • python中的类与对象
  • sentry-cli - error: Failed to load .sentryclirc file from project path
  • 回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测
  • 如何添加 Android Native 系统服务
  • 【力扣】189.轮转数组
  • C语言字符函数和字符串函数详解
  • 【CKA模拟题】查询消耗CPU最多的Pod
  • 网络简略总结
  • 如何处理错误情况
  • 【Greenhills】MULTI IDE-GHS最新版本Compiler 23.5.4的兼容性问题
  • 用连续自然数之和来表达整数 - 华为OD统一考试(C卷)
  • SQLiteC/C++接口详细介绍之sqlite3类(十二)