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

news2024/9/22 11:27:00

学习记录

  • 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.coloradmin.cn/o/1645674.html

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

相关文章

知到java笔记(4.1--继承的用法以及this和super的用法)

格式: 例子: get set获取父类的私有变量 private属性 this和super区别: this用法 super用法 例子

从固定到可变:利用Deformable Attention提升模型能力

1. 引言 本文将深入探讨注意力机制的内部细节,这是了解机器如何选择和处理信息的基础。但这还不是全部,我们还将探讨可变形注意力的创新理念,这是一种将适应性放在首位的动态方法。 闲话少说,我们直接开始吧! 2. 注…

重学java 29.经典接口

光阴似箭,我好像跟不上 —— 24.5.6 一、java.lang.Comparable 我们知道基本数据类型的数据(除boolean类型外)需要比较大小的话,直接使用比较运算符即可,但是引用数据类型是不能直接使用比较运算符来比较大小的。那么,如何解决这个…

linux部署java1.8(jdk1.8)

两种方式: 方式一 1.输入查找命令: yum -y list java*2.输入安装命令: yum install -y java-1.8.0-openjdk.x86_643.测试是否已经安装: java -version方式二: 点击链接进入官网:https://www.oracle.com/…

【教程】极简Python接入免费语音识别API

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,请不吝给个[点赞、收藏、关注]哦~ 安装库: pip install SpeechRecognition 使用方法: import speech_recognition as srr sr.Recognizer() harvard sr…

idea2023.2.5的控制台动态配置当前环境

一、idea2023.2.5的控制台动态配置当前环境 1.1、idea版本 1.2、配置方式 1.2.1、方式一 1.2.2、方式二 1.3、参考 https://blog.csdn.net/xiaoheihai666/article/details/127757658

使用idea编辑器回退git已经push的代码

直接上结果 选择想要回退的那次/多次提交历史, 右击, 选中 revert commit git自动产生一个Revert记录,然后我们会看到git自动将我第三次错误提交代码回退了,这个其实就相当于git帮我们手动回退了代码。 后续,只需要我们将本次改动push到远…

从零开始的软件测试学习之旅(五)web测试项目

这里写目录标题 功能型测试非功能性测试面试拓展项目与数据库关系 测试用例设计—基于TPshop前台下单流程 功能型测试 一.设计测试 a,需求分析 1.输入分析 分析项目中要求如:输入长度,类型要求,组成规则,是否为空,是否重复 2.交付分析 判断所有数据正确,有错误给出提示(优化…

锂电池SOH估计 | Matlab实现基于ALO-SVR模型的锂电池SOH估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池SOH估计 | Matlab实现基于ALO-SVR模型的锂电池SOH估计 蚁狮优化支持向量机锂电池健康状态SOH估计; 具体流程如下; 1、分析锂离子电池老化数据集,从中选取具有代表电池性能衰减…

2024第2届华东国际宠物用品展(苏州)

第2届华东宠物展(苏州)2024.06.28-30 苏州国际博览中心 中国宠业新锐品牌展 400海外展商 20000平方展出面积 3000知名品牌 60000优质观众 参展组委会咨询:深宠展邹春宇 关于展会 第2届华东国际宠物用品展览会(苏州)暨中国宠业新锐品牌…

【自用】了解移动存储卡的基本信息

前言 本文是看B站视频做的一个简单笔记,方便日后自己快速回顾,内容主要介绍了存储卡基本参数,了解卡面上的数字、图标代表的含义。对于日后如何挑选判断一张存储卡的好坏、判别一张存储卡是否合格有一定帮助。 视频参考链接:【硬…

嵌入式Linux学习第二天

今天学习linuxC编程。首先要熟悉linux下编写c程序的过程。 编写程序Hello World! 首先创建存放程序的文件夹,如下图所示: 接下来在创建一个文件夹来保存这节要编写的代码。指令:mkdir 3.1 接下来我们要设置VIM编辑器的一些配置&#xff0…

karateclub,一个超酷的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个超酷的 Python 库 - karateclub。 Github地址:https://github.com/benedekrozemberczki/karateclub Python karateclub是一个用于图嵌入和图聚类的库&#xff…

ERP系统电子文件归档和电子档案管理规范

ERP系统电子文件归档和电子档案管理规范 1 范围 本文件描述了企业资源计划(ERP)系统形成电子文件归档和电子档案管理的方法。 本文件适用于企业资源计划(ERP)系统(含采购、销售、物料、生产计划、质量、设备、项目…

linux学习:线程池

目录 原理 初始线程池 运行中的线程池 相关结构体 api 线程池初始化 投送任务 增加活跃线程 删除活跃线程 销毁线程池 例子 thread_pool.h thread_pool.c test.c 测试程序 原理 一个进程中的线程就好比是一家公司里的员工,员工的数目应该根据公司的…

LangChain 概念篇(喂饭级)

LangChain 介绍 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。 LangChain 框架的设计目标 支持应用程序让其不仅会通过 API 调用语言模型,而且还会数据感知(将语言模型连接到其他数据源),Be agentic(允…

ncnn 算子操作描述

ncnn 算子操作描述,具体查询见 ncnn/docs/developer-guide/operators.md at master Tencent/ncnn GitHub 都是从上述地方copy过来的,做备份。 具体如下: 1.AbsVal: 计算输入张量中的每个元素的绝对值。 y abs(x)one_blob_only 只支持…

SpringBoot中实现发送邮件

概要 在Spring Boot中发送电子邮件相对简单。你可以使用Spring的邮件支持来实现这一点。 步骤: 1.添加依赖:首先,需要在你的pom.xml文件中添加Spring Boot的邮件发送器依赖。 2. 配置邮件服务器:在application.properties或app…

Netty 网络编程深入学习【一】:ByteBuffer 源码解析

ByteBuffer源码阅读 ByteBuffer是一个用于处理字节数据的缓冲区类。它是Java NIO 包的一部分,提供了一种高效的方式来处理原始字节数据。 ByteBuffer 可以用来读取、写入、修改和操作字节数据,它是一种直接操作字节的方式,比起传统的 InputSt…

生成一个好故事!StoryDiffusion:一致自注意力和语义运动预测器必不可少(南开字节)

文章链接:https://arxiv.org/pdf/2405.01434 主页:https://storydiffusion.github.io/ 对于最近基于扩散的生成模型来说,在一系列生成的图像中保持一致的内容,尤其是那些包含主题和复杂细节的图像,是一个重大挑战。本…