Go 语言中的 Moduels 管理(Let‘s Go 三十四)

news2025/2/27 21:15:07

Go 1.11以前使用包管理一直被开发者所诟病。既然GOPATH这种包管理引起了一线开发者的一片骂声,所以,Go官方体恤一线开发者对GOPATH这种包管理的情绪,一直致力努力提供对一线开发者友好的包管理解决方法而奋斗。从最初的GOPATHGO VENDOR,再到现在最新的GO MODULES,这期间,Go 官方不免走了很多弯路,但展现在我们跟的GO MODULES已是很像样的模块管理了。

在命令行窗口输入 go env命令,可以看到,多了个GO111MODULE变量,111是代表Go 1.11版本提出来的。

它有三个可选值:offonauto,默认值是auto

  1. GO111MODULE=off禁用模块支持,编译时会从GOPATHvendor文件夹中查找包。
  2. GO111MODULE=on启用模块支持,编译时会忽略GOPATHvendor文件夹,只根据 go.mod下载依赖。
  3. GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,自动开启模块支持。

````GO111MODULEGo 1.13```版本之后默认是开打的。

在这里插入图片描述

go mod 依赖管理

go mod不再依靠$GOPATH,以至于它可以不必在$GOPATH目录创建 Go 项目。

依次在该目录创建文件夹和main.go文件。

在这里插入图片描述

在这里插入图片描述

使用以下命令自动生成go.mod文件。

go mod init github.com/zhenqi/module-main

在这里插入图片描述

编辑main.go文件,输入以下内容。

package main

import (
	log "github.com/sirupsen/logrus"
)

func main(){
	log.WithFields(log.Fields{
		"animal": "walrus"
	}).Info("A walrus appears")
}

在这里插入图片描述

由于使用了第三方依赖库,需要先下载依赖库。

go get github.com/sirupsen/logrus

执行该语句会报错。

在这里插入图片描述

这是由于自Go 1.13以后的版本,GOPROXY默认值为proxy.golang.org,很不巧,这个地址在国内却无法访问啊!那该怎么办呢?好在国内大厂商提供了镜像,那便是 七牛云 推出的 goproxy.cn,好让国内开发者更好的使用GO MODULES

go env -w GOPROXY=https://goproxy.cn,direct

在这里插入图片描述

再次运行go get github.com/sirupsen/logrus 命令,可以看到,正在下载第三方依赖。

在这里插入图片描述

打开go.mod文件,明显追加了几行内容。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于遗传算法、元胞自动机邻域和随机重启爬山混合优化算法(GA-RRHC)的柔性车间调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LeetCode50天刷题计划第二季(Day 27 — 寻找旋转排序数组中的最小值(9.50- 11.20)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、题目寻找旋转排序数组中的最小值示例提示:二、思路三、代码前言 芜湖 一、题目 寻找旋转排序数组中的最小值 已知一个长度为 n 的数组&#…

web前端期末大作业——基于HTML+CSS+JavaScript实现中国茶文化(30页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

大数据开发是做什么的?怎样入门?

其实现在有很多小伙伴看中了大数据的发展前景,但是其实不知道大数据开发具体是做什么的,又该怎么学习?学习了之后又该做什么? 下面具体给你分析下大数据开发是做什么的,又需要学习和掌握哪些技能~ 大数据开发做什么&a…

致远OA ajax.do 任意文件上传 (CNVD-2021-01627) 漏洞复现

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓01 漏洞描述02 影响范围03 验证方式04 利用方式05 修复方案01 漏洞描述 致远OA是一套办公协同管理软件。由于致远OA旧版本某些接口存在未授权访问,以及部分函数存在过滤不足,攻…

大数据实战之前戏

开发背景 因为要开发一套通话详单系统。该系统上每天产生1亿条通话话单,要保存一个月的通话话单。也就是保存30亿条通话,能够做到准实时的通话详单查询。于是采用大数据架构进行话单的保存和查询。 服务器规划 为了验证系统的可用性,我先搭…

从零学习 InfiniBand-network架构(七) ——IB协议中数据如何传输

从零学习 InfiniBand-network架构(七) —— IB协议中数据如何传输 🔈声明: 😃博主主页:王_嘻嘻的CSDN主页 🔑未经作者允许,禁止转载 🚩本专题部分内容源于《InfiniBand-n…

C++ 智能指针最佳实践源码分析

智能指针在 C11 标准中被引入真正标准库(C98 中引入的 auto_ptr 存在较多问题),但目前很多 C开发者仍习惯用原生指针,视智能指针为洪水猛兽。但很多实际场景下,智能指针却是解决问题的神器,尤其是一些涉及多…

QT之Windows开发及源码调试环境搭建

QT之Windows开发及源码调试环境搭建1. QT 安装2. 配置源码调试2.1 QTCreator2.2 Visual Studio 20193. 参考1. QT 安装 QT对5.15以及以上版本提供在线安装工具 官方链接清华镜像,但是这里面没由Windows的在线安装工具(2022/11/11查看的时候没有) 这里安装以QT 5.…

全是狠活!SpringBoot文档也太那个了,图文并茂详尽讲解

前沿 SpringBoot是由Pivotal团队提供的在Spring框架基础之上开发的框架,其设计目的是用来简化应用的初始搭建以及开发过程。 SpringBoot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是…

【JavaSE】继承

文章目录1. 如何继承2. 子类如何访问父类的成员2.1 子类中访问父类的成员变量2.2 子类中访问父类的成员方法3. super关键字4. 如何写构造方法前言:为方便讲解一个java文件写多个类。 1. 如何继承 class Cat {public String name;public int age;public String sex;…

c++基础篇(一篇文章带你进入c++的新手村)

前沿: c作为目前比较的流行的语言之一,在就业上也是运用比较广泛的语言之一,并且经过这么多年的历练久经不衰,所以说选择学c是一个不错的选择^_^,前面看到一个段子,如何在21天精通c,我动态里有这…

git 记录

git 工作区介绍 workspace:工作区,就是平时存放项目代码的地方。Index/Stage:暂存区,用于临时存放你的改动,事实上只是一个文件,保存即将提交到文件列表信息。Repository:仓库区(或版…

单机hbase-2.4.15配置snappy压缩

单机hbase配置snappy压缩 前言 1. 过程比较坎坷,网上帖子说法不一,以下过程是参考几个帖子亲自走过一遍,并最终可以成功建表。2. 本人安装的所有目录均为/data/test-hbase,涉及目录的替换为自己的目录即可。参考连接 https://bl…

【黑马程序员】Redis 课程 P37 的练习_三种方式实现功能_【黑马点评项目】给店铺类型查询业务添加缓存

本博客内容对应的视频为:https://www.bilibili.com/video/av766995956/?p37补充介绍:【黑马点评项目】是黑马官方于 2022-02-28 在 BiliBili 发表的学习视频教程的练手项目 1.简介 练习:给店铺类型查询业务添加缓存 店铺类型在首页和其它多…

栈和队列(顺序表、单链表形式)

栈和队列栈栈.顺序表结构体的设计栈的初始化栈的销毁入栈出栈获取栈顶数据判断栈空栈中有效元素的个数Stack.hStack.ctest.c栈.单链表结构体设计栈的初始化栈的销毁入栈出栈获取栈顶元素判断栈是否为空获取栈中元素个数Stack.hStack.ctest.c队列队列.顺序表结构体的设计队列的初…

学生HTML个人网页作业作品 简单的IT技术个人简历模板html下载 简单个人网页设计作业 静态HTML个人博客主页

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Python老手也会犯的20个新手级错误

Python编码时应避免的常见错误 编程(不仅Python,也包括其它编程语言)最好的一点是,有多种方法来实现同一解决方案。 使用不同的方法来达到相同的结果(图像由作者绘制) 由于下述原因,有些方法会比…

几款很好看的爱心表白代码(动态)

分享几款好看的爱心表白代码❤️爱心代码❤️(C语言)❤️流动爱心❤️(htmlcssjs)❤️线条爱心❤️(htmlcssjs)❤️biu表白爱心❤️(htmlcssjs)❤️matlab爱心函数❤️(需…

Java类和对象(一)

🎀作者:爱塔居的博客_CSDN博客-领域博主 🌭专栏:JavaSE 🍧作者简介:大三学生,想要努力地变得更好! 附上一张可可爱爱的猫猫图~ 🍓🍓🍓&#x1f35…