【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

在这里插入图片描述


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

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

相关文章

[qnx] 通过zcu104 SD卡更新qnx镜像的步骤

0. 概述 本文演示如果给Xlinx zcu104开发板刷入自定义的qnx镜像 1.将拨码开关设置为SD卡启动 如下图所示,将1拨到On,2,3,4拨到Off,即为通过SD启动。 2.准备SD卡中的内容 首先需要将SD格式化为FAT32的(如果已经是FAT32格式,则…

网络安全之OSI七层模型详解

OSI七层模型分为控制层(前三层)和数据层(后四层)。从第七层到一层为; 应用层(7)接收数据 表示层(6)将数据翻译为机器语言 会话层(5)建立虚连接…

C++证道之路第十八章探讨C++新标准

一、复习前面介绍过的C11新功能 1、新类型 C11新增了类型long long 和unsigned long long 新增了类型char16_t 和char32_t 2、统一的初始化 C11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可以用于所有内置类型和用户定义的类…

可编程 IP 新星 Story Protocol 何以引领链上文艺复兴浪潮?

当前,随着 Web3 行业发展进入全新阶段,与生成式人工智能(AIGC)技术融合正在创造潜力新星项目。也是目前的互联网生态下,任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容,带来了用户生成内容&a…

算法(C++

题目:螺旋矩阵(59. 螺旋矩阵 II - 力扣(LeetCode)) 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入&am…

Vue进阶之Vue项目实战(二)

Vue项目实战 构建基础框架路由 项目( v1.0,base-app-layer)导航 router物料编排选型 插件化插件化平时写代码场景 配置器开发 构建基础框架 路由 路由分类: memoryHistory:内存路由,路由信息记录在内存中&#xff0…

解决github的remote rejected|git存储库的推送保护

前言 git存储库的推送保护。当你试图推送代码到GitHub仓库时,由于存在与主分支(master)相关的仓库规则违规行为,推送会被拒绝了。这种保护机制帮助确保只有经过授权和符合规定的代码才能被合并到主分支,从而保护了主分…

Unreal Engine插件打包技巧

打开UE工程,点击编辑,选择插件,点击"打包"按钮,选择输出目录UE4.26版本打包提示需要VS2017问题解决 1)用记事本打开文件【UE4对应版本安装目录\Epic Games\UE_4.26\Engine\Build\BatchFiles\RunUAT.bat】 2&…

Linux网络部分——DNS域名解析服务

目录 1. 域名结构 2. 系统根据域名查找IP地址的过程 3.DNS域名解析方式 4.DNS域名解析的工作原理【☆】 5.域名解析查询方式 6.搭建主从DNS域名服务器 ①初始化操作主服务器和从服务器,安装BIND软件 ②修改主服务器的主配置文件、区域配置文件、区域数…

pyside6的调色板QPalette的简单应用

使用调色板需要先导入:from PySide6.QtGui import QPalette 调色板QPalette的源代码: class QPalette(Shiboken.Object):class ColorGroup(enum.Enum):Active : QPalette.ColorGroup ... # 0x0Normal : QPalette.ColorGrou…

鸿蒙内核源码分析(消息队列篇) | 进程间如何异步传递大数据

基本概念 队列又称消息队列,是一种常用于任务间通信的数据结构。队列接收来自任务或中断的不固定长度消息,并根据不同的接口确定传递的消息是否存放在队列空间中。 任务能够从队列里面读取消息,当队列中的消息为空时,挂起读取任务…

文献速递:深度学习医学影像心脏疾病检测与诊断--从SPECT/CT衰减图中深度学习冠状动脉钙化评分提高了对重大不良心脏事件的预测

Title 题目 Deep Learning Coronary Artery Calcium Scores from SPECT/CT Attenuation Maps Improve Prediction of Major Adverse Cardiac Events 从SPECT/CT衰减图中深度学习冠状动脉钙化评分提高了对重大不良心脏事件的预测 01 文献速递介绍 低剂量非门控CT衰减校正&am…

java之web笔记

1.Servlet技术 1.1 JavaWeb概述 在Sun的Java Servlet规范中,对Java Web应用作了这样定义:“JavaWeb应用由一组Servlet、HTML页、类、以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行。 Java Web应用中可以包含如下内容…

智能AI摄像头项目

项目概要 硬件说明:易百纳rv1126 38板,易百纳GC2053摄像头,拓展版(自绘),屏幕驱动板(自绘),3.1inch mipi屏,FT5316触摸屏 开发环境 硬件分析 开发环境及sd…

语音识别---节拍器

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

深度神经网络中的不确定性研究综述

A.单一确定性方法 对于确定性神经网络,参数是确定的,每次向前传递的重复都会产生相同的结果。对于不确定性量化的单一确定性网络方法,我们总结了在确定性网络中基于单一正向传递计算预测y *的不确定性的所有方法。在文献中,可以找…

Scratch编程v3.29.1少儿编程工具

软件介绍 SCRATCH是一款由麻省理工学院(MIT)媒体实验室开发的图形化编程语言和集成开发环境(IDE)。它的目标是让编程变得有趣、直观且易学,尤其是针对儿童和青少年群体。通过SCRATCH,用户可以通过拖放代码…

Al加码,引爆“躺平式”旅游 | 最新快讯

旅游业正迎来新的技术浪潮。 文|锌刻度,作者|孟会缘,编辑|李季 今年的五一,“微度假”“微旅行”纷纷出圈。 相较于三亚、云南等老牌旅游大热门,人们开始寻找一些不用“人挤人”的小众旅行目的…

第一天学习(GPT)

1.图片和语义是如何映射的? **Dalle2:**首先会对图片和语义进行预训练,将二者向量存储起来,然后将语义的vector向量转成图片的向量,然后基于这个图片往回反向映射(Diffusion)——>根据这段描…

Ps 中 曲线和色阶的区别在哪里?

【官方解释】 在Photoshop中,曲线(Curves)和色阶(Levels)是两种调整图像色调和对比度的工具,它们有一些相似之处,但也有一些重要的区别。 调整方式: 曲线(Curves)&…