【go项目01_学习记录05】

学习记录

  • 1 依赖管理 Go Modules
    • 1.1 弃用 $GOPATH
    • 1.2 Go Modules 日常使用
      • 1.2.1 初始化生成go.mod文件
      • 1.2.2 Go Proxy代理
      • 1.2.3 go.mod文件查看
      • 1.2.4 go.sum文件查看
      • 1.2.5 indirect 含义
      • 1.2.6 go mod tidy 命令
      • 1.2.7 清空 Go Modules 缓存
      • 1.2.8 下载依赖
      • 1.2.9 所有 Go Modules 命令
      • 1.2.10 相关环境变量
  • 2 补充
    • 2.1 git checkout .
    • 2.2 遇到换行符警告

1 依赖管理 Go Modules

1.1 弃用 $GOPATH

Go Modules 出现的目的之一就是为了解决 GOPATH 的问题。
在 $GOPATH 时代,Go 源码必须放置于 $GOPATH/src 下,抛弃 $GOPATH 的好处,是你能在任意地方创建的 Go 项目。
另外,$GOPATH 有非常落后的依赖管理系统。因在执行 go get 时,无法传达任何版本信息。
在构建 Go 应用程序上,我们无法保证其它人与你所期望依赖的第三方库是相同的版本(相同的代码),也就是说无法保证所有人的依赖版本都一致。

1.2 Go Modules 日常使用

1.2.1 初始化生成go.mod文件

go mod init

1.2.2 Go Proxy代理

因国内访问外网受限,一般我们都会配合 Go Proxy 使用,以防止使用 go get 获取源码包时花费时间过长或无法下载,安装 package 的原则是先拉最新的 release tag,若无 tag 则拉最新的 commit。

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

1.2.3 go.mod文件查看

每一次go get都会同时修改go.mod和go.sum文件
在这里插入图片描述
在这里插入图片描述
参数:
module —— 我们的 goblog 在 Go Module 里也算是一个 Module ;
go —— 指定了版本要求,最低 1.20
require —— 是项目所需依赖

1.2.4 go.sum文件查看

保存着依赖包的版本和哈希值:
在这里插入图片描述
go.sum 里不仅会保存直接依赖包的哈希值,间接依赖包的哈希值也会被保存。
每个模块路径有如下两种哈希
在这里插入图片描述
相当于”双重锁“确保一致性

1.2.5 indirect 含义

在这里插入图片描述
此标志标明这个依赖包还未被使用,如果你在代码的某个地方 import 到的话,VSCode 的 Go 插件就会自动将这个标志去除。

1.2.6 go mod tidy 命令

此命令做整理依赖使用,执行时会把未使用的 module 移除掉

1.2.7 清空 Go Modules 缓存

go mod tidy之后本地缓存有之前go get的内容
在这里插入图片描述
清空本地下载的 Go Modules 缓存:

go clean -modcache

在这里插入图片描述

1.2.8 下载依赖

默认情况下,当 go run 和 go build 命令执行时(启动air会自动执行这两步),Go 会基于 go.mod 文件自动拉取依赖。
在这里插入图片描述

Go Module 也提供了一个命令用以下载项目所需依赖:

go mod download

1.2.9 所有 Go Modules 命令

命令功能
go mod init生成 go.mod 文件
go mod download下载 go.mod 文件中指明的所有依赖
go mod tidy整理现有的依赖
go mod graph查看现有的依赖结构
go mod edit编辑 go.mod 文件
go mod vendo导出项目所有的依赖到 vendor 目录
go mod verify校验一个模块是否被篡改过
go mod why查看为什么需要依赖某模块

1.2.10 相关环境变量

  1. GO111MODULE
    在这里插入图片描述

  2. GOPROXY

  3. GOSUMDB
    Go Checksum Database 的缩写,用于在拉取模块版本时(无论是从源站拉取还是通过 Go Module Proxy 拉取)保证拉取到的模块代码包未经过篡改,若发现不一致将会立即中止。

  4. GONOPROXY/GONOSUMDB/GOPRIVATE

在这里插入图片描述


2 补充

2.1 git checkout .

git checkout . 命令的含义是将工作目录中所有被修改的文件恢复到最近一次提交的状态,即撤销对这些文件的修改。

2.2 遇到换行符警告

警告是由于 Git 在添加文件时检测到换行符的不一致性而引起的

git config --global core.autocrlf true

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sip转webrtc方案

技术选型 由于很多企业会议协议用的主要是webrtc,但是项目上很多时候的一些旧设备只支持sip协议,并不支持webrtc协议。所以sip和webrtc的相互转换就很有必要。 流媒体服务mediasoup本身并不支持sip协议。那么如何实现sip转webrtc呢? 根据调研…

攻防世界-xff-referer

题目信息 分析过程 显示ip必须为123.123.123.123,则进行伪造 解题过程 打开repeator 提示必须来自https://www.google.com,则再次构造Referer 相关知识 x-forwarded-for 和 referer的区别: x-forwarded-for 用来证明ip的像是“127.0.0.1”这种&a…

迭代器解释(C++)

一、什么是迭代器 为了提高C编程的效率,STL(Standard Template Library)中提供了许多容器,包括vector、list、map、set等。然而有些容器(vector)可以通过下标索引的方式访问容器里面的数据,但是…

【论文泛读】如何进行动力学重构? 神经网络自动编码器结合SINDy发现数据背后蕴含的方程

这一篇文章叫做 数据驱动的坐标发现与方程发现算法。 想回答的问题很简单,“如何根据数据写方程”。 想想牛顿的处境,如何根据各种不同物体下落的数据,写出万有引力的数学公式的。这篇文章就是来做这件事的。当然,这篇论文并没有…

流畅的python-学习笔记_对象引用、可变性、垃圾回收

变量不是盒子 即变量是引用,而不是实际内存,多个标识赋值相同变量时,多余标识是引用 标识、相等性、别名 比较对象的值,is比较对象的id。实际调用对象的__eq__方法。is速度比快,因为is不能重载,省去了寻…

TypeScript学习日志-第十九天(namespace命名空间)

namespace命名空间 一、基本用法 namespace 所有的变量以及方法必须要导出才能访问,如图: 二、 嵌套 namespace 可以进行嵌套使用,如图: 它也必须需要导出才能访问 三、合并 当我们出现两个同名的 namespace 它就会合并这两…

4+1视图,注意区分类图与对象图

注意区分类图和对象图。对象图标记的是对象名,命名形式 对象名:类名,或者:类名。这里没有出现冒号,表示的是类图。 对象图(object diagram)。 对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一…

创造未来知识管理新篇章:Ollama与AnythingLLM联手打造个人与企业的安全知识库!

一 Ollama 1.1 简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程,使得用户能够快速地在本地运行大…

软件测试,软件评测师

如果你想考软件评测师证书,那这篇文章可以帮你少走很多弯路,估计你用别人一半的时间备考就可以通过考试,以下为本人亲身经验哈,你可以先收藏后看哦,提前祝你考试过过过。 如果以后想从事一份软件测试工程师的工作&…

浅析扩散模型与图像生成【应用篇】(二十一)——DALLE·2

21. Hierarchical Text-Conditional Image Generation with CLIP Latents 该文提出一种基于层级式扩散模型的由文本生成图像的方法,也就是大名鼎鼎的DALLE2。在DALLE2之前呢,OpenAI团队已经推出了DALLE和GLIDE两个文生图模型了,其中DALLE是基…

fabric部署调用合约示例

一 打包智能合约 ①进入fabric-samples文件夹下的chaincode/fabcar/go目录下执行 GO111MODULEon go mod vendor下载依赖(文件夹下已经有go.mod,不需要使用go mod init生成该module文件)②进入到test-network文件下使用以下命令将二进制文件…

2002-2021年各地区平均受教育年限数据(分性别)(含原始数据+计算过程+计算结果)

2002-2021年各地区平均受教育年限数据(分性别)(含原始数据计算过程计算结果) 1、时间:2002-2021年 2、来源:国家统计局、统计年鉴、各省年鉴 3、指标:行政区划代码、地区、年份、人均受教育年…

Footprint Analytics 与 Core Chain 达成战略合作

​ 领先的区块链数据解决方案提供商 Footprint Analytics 与比特币驱动、EVM 兼容的 Layer 1 区块链 Core Chain 宣布达成战略合作。此次合作旨在将 Footprint Analytics 的前沿数据解决方案与 Core Chain 的区块链基础设施相结合,共同引领区块链领域的创新发展。 …

苹果挖走大量谷歌人才,建立神秘人工智能实验室;李飞飞创业成立「空间智能」公司丨 RTE 开发者日报 Vol.197

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Apache.commons.lang3 的 isNumber 将会在 lang 4 的时候丢弃

在判断输入的字符串是不是一个数字的时候,我们通常用的最多的方法就是 : NumberUtils.isNumber("12"); 但是这个方法将会在 Lang 4.0 版本中被丢弃。 可以使用的替代方法为:isCreatable(String) 通过查看源代码,我们…

【数据结构】有关环形链表题目的总结

文章目录 引入 - 快慢指针思考 - 快慢指针行走步数进阶 - 寻找环形链表的头 引入 - 快慢指针 141-环形链表 - Leetcode 关于这道题,大家可以利用快慢指针,一个每次走两步,一个每次走一步,只要他们有一次相撞了就代表说这是一个链…

Leetcode编程练习

面试题-消失的数字 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start 1;end - 1;}}void rotate(vector<int>& …

python爬虫(一)之 抓取极氪网站汽车文章

极氪汽车文章爬虫 闲来没事&#xff0c;将极氪网站的汽车文章吃干抹尽&#xff0c;全部抓取到本地&#xff0c;还是有点小小的难度。不能抓取太快&#xff0c;太快容易被封禁IP&#xff0c;不过就算被封了问题也不大&#xff0c;大不了重启路由器&#xff0c;然后你的IP里面又…

谷歌明年6月关闭 Google Fit 运动记录API,要求开发者迁移至Android Health平台 | 最新快讯

5 月 6 日消息&#xff0c;谷歌近日发布官方新闻稿&#xff0c;宣布将在明年 6 月使用 Android Health 平台取代 Google Fit 运动记录 API&#xff0c;开发人员应当尽早启动迁移计划。 谷歌自 2022 年起逐渐扩大对 Android Health 平台的投资&#xff0c;旨在减少平台碎片化&am…

在uni-app开发的小程序中引入阿里的多色图标

uniapp不支持阿里多色图标&#xff0c;需要使用工具iconfont-tools进行处理 1.首先 在阿里图标库将 需要的图标添加到项目中 并下载压缩包&#xff0c;取出iconfont.js文件 2.安装iconfont-tools,安装完成会显示出安装到了电脑的那个目录 3&#xff0c;进入目录就会看到下面的…