栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golong~最新Windows下Go环境+Go mod搭建, 介绍GOROOT、GOPATH、GOPROXY之间关系

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golong~最新Windows下Go环境+Go mod搭建, 介绍GOROOT、GOPATH、GOPROXY之间关系

文章目录
  • 前言
  • 搭建Go环境
    • Goland下载
    • Golong的SDK下载
    • 环境变量配置
  • 搭建GO mod环境
    • 初始化Go mod项目
  • GOROOT、GOPATH、GOPROXY之间关系
    • GOROOT介绍
    • GOPATH介绍
    • Go Modules的诞生
    • GOPROXY介绍

前言
  • 本人环境是windows10+Goland2020.3.4+Go版本是1.17.3
  • 大家如果只是单纯学习Go语言,只需要搭建Go环境就可以, 如果是想开发一个项目的话,目前主流公司都是使用Go mod的形式, 如果你学过java的话,这个Go mod和java的maven如出一辙,甚至比maven还要简单
  • PS:如果要搭建Go mod环境,必须必须Go的版本是在14以上!!!
搭建Go环境 Goland下载
  • 直接去官网下载即可 https://www.jetbrains.com/go/
  • 安装路径建议不要动, 以防后续有其他环境路径问题
Golong的SDK下载
  • 直接通过Goland下载即可

  • PS:一定要记着Location目录地址
环境变量配置


  • https://goproxy.cn七牛云为开发者提供免费、可靠的、持续在线的且经过CDN加速的代理。后续使用go mod的时候速度较友好.
  • GOPATH随便一个目录就好,后续会存储下载好的依赖文件
  • GOROOT是你下载go版本的目录地址,这个一定不能错
  • 这里确认好之后,就可以才cmd里看到你的go环境go env
  • 此时你的GO环境就搭建好了, 新建项目就可以学习GO语言了
搭建GO mod环境
  • 搭建这个环境在系统一定要配之前的GOPROXY
  • 新建项目
  • 防止Goland坑人,注意以下几点配置


  • 最好在cmd里执行以下这个命令set GO111MODULE=on

GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,模块支持,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
(1)当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
(2)当前文件在包含go.mod文件的目录下面。

  • 注意:wind的GOPROXY默认是https://proxy.golang.org,direct
    这个goproxy在使用go get安装第三方库的时候回报错,导致无法下载成功
    所以一定要改成https://goproxy.io/
初始化Go mod项目
  • 使用命令:go mod init [项目目录名]
  • 写一个测试文件
package main

import "github.com/gin-gonic/gin"

// 保存文件即可, 此时 "github.com/gin-gonic/gin" 提示红色(表示这个依赖不存在)

  • 使用 go mod tidy 整理依赖
  • 使用go build自动下载依赖

如果出现这个问题:cannot find module providing package github.com/gin-gonic/gin: 安装gin后找不到gin包

解决办法: 在使用 GOPROXY 的时候,开启了 GO111MODULE,导致包管理非官方所说的在 $GOPATHsrc,而是去了 $GOPATHsrcpkg目录下,此时就需要用go mod引入这些包
也就是运行以下两条命令

 go mod init gin
 
 go mod edit -require github.com/gin-gonic/gin@latest

  • 查看项目依赖的包go list -m all
    至此go mod项目也搭建好了
GOROOT、GOPATH、GOPROXY之间关系 GOROOT介绍

在安装完Golang语言的时候,所谓的安装路径其实就是你的GOROOT路径,也就是说GOROOT存放的Golang语言内建的程式库的所在位置,而通常你安装完后,你电脑的环境变数就会设好GOROOT路径,当你开发Golang程式的时候,当你import内建的程式库的时候,并不需要额外安装,而当程式运行后,预设也会先去GOROOT路径下寻找相对应的程式库来运行。

GOPATH介绍
package main

import "github.com/gin-gonic/gin"

// 保存文件即可, 此时 "github.com/gin-gonic/gin" 提示红色(表示这个依赖不存在)
func main() {
	key := gin.BindKey

}

当我们import了一个github.com/gin-gonic/gin套件,这个是别人开发的套件,是不存在于官方程式库的,而是放在GitHub上的第三方套件。

此时执行Golang程式码,当需要存取套件时,会先去GOROOT路径下的src资料夹找同等于我们在程式码中import的路径下去找有没有gin这个资料夹,而这资料夹里面就是包含了所有有关于该套件的程式库。
如果在GOROOT路径下没有找到,则会往GOPATH路径下的src资料夹找同等于我们在程式码中import的路径下去找有没有gin这个资料夹。
所以只要GOROOT跟GOPATH路径下都没有找到该套件的话,就无法执行该程式码。

根据上面GOROOT的介绍,我们可以知道官方的程式库所在位置就是在GOROOT里面,而GOPATH就是专门存放第三方套件以供我们程式码的需要。那通常开发Golang的话,通常会在重新设定GOPATH的位置。

第三方套件只要不是官方程式库,都需要放置在GOPATH/src的路径下才可以使用。

Go Modules的诞生

为了解决不被GOPATH的问题,因此官方在1.11开始推出了Go Modules的功能。Go Modules解决方式很像是Java看到Maven的做法,将第三方程式库储存在本地的空间,并且给程式去引用。

  1. 设定GO111MODULE环境变数~前面有说到过其具体用途
  2. 我是建议要开发Go mod就不再使用GOPATH的功能了,而是采用Go Modules的做法,因此建议都设定为on。而采用Go Modules,下载下来的第三方套件都在哪呢?其实就位在GOPATH/pkg/mod资料夹里面。
  3. 在GOPATH/pkg/mod资料夹里面。而且会发现出现一个go.sum的档案,这个档案基本上用来记录套件版本的关系,确保是正确的,是不太需要理会的。

官方说明:除了go.mod之外,go命令还维护一个名为go.sum的文件,其中包含特定模块版本内容的预期加密哈希
go命令使用go.sum文件确保这些模块的未来下载检索与第一次下载相同的位,以确保项目所依赖的模块不会出现意外更改,无论是出于恶意、意外还是其他原因。 go.mod和go.sum都应检入版本控制。
go.sum 不需要手工维护,所以可以不用太关注。

GOPROXY介绍
  • 这个具体的公司会有不同的代理,具体配置方案和前面一样, 一般学习使用我推荐的那个就够
  • proxy配置的不同就是在下载这个依赖的时候的代理方不同
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908849.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号