Golang必知必会之Go Mod命令详解

 更新时间:2022年07月14日 14:19:41   作者:猫轻王  
go mod可以使项目从GOPATH的强制依赖中独立出来,也就是说你的项目依赖不再需要放在在GOPATH下面了,下面这篇文章主要给大家介绍了关于Golang必知必会之Go Mod命令的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、go mod 是什么?

go modules 官方定义为:

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。
go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

二、详细命令

1. init

代码:

go mod init

生成 go.mod 文件,此命令会在当前目录中初始化和创建一个新的go.mod文件,手动创建go.mod文件再包含一些module声明也等同该命令,而go mod init命令便是帮我们简便操作,可以帮助我们自动创建。

2.download

代码:

go mod download

下载 go.mod 文件中指明的所有依赖,使用此命令来下载指定的模块,模块的格式可以根据主模块依赖的形式或者path@version形式指定。

3.tidy

代码:

go mod tidy

整理现有的依赖,使用此命令来下载指定的模块,并删除已经不用的模块

4.graph

代码:

go mod graph

查看现有的依赖结构,生成项目所有依赖的报告,但可读性太差,图形化更方便。

5.edit

代码:

go mod edit

编辑 go.mod 文件,之后通过 download 或 edit 进行下载

5.vendor

代码:

go mod vendor

导出项目所有的依赖到vendor目录,从mod中拷贝到项目的vendor目录下,IDE可以识别这样的目录。

5.verify

代码:

go mod verify

校验一个模块是否被篡改过,查询某个常见的模块出错是否已被篡改

5.why

代码:

go mod why

查看为什么需要依赖某模块,查询某个不常见的模块是否是哪个模块的引用

补充:golang开启mod后import报红解决

在golang中,开启mod模式后,import包变红,但是程序可以正常运行

如下所示:

猜测是索引路径出了问题,当前项目的依赖路径如下,可以看到只有sdk和GOPATH,没有go mod模块

新建go项目,然后老老实实的go mod init [项目名],然后go build拉包,一切正常,这时,在setting里再启用go mod勾选上

然后,奇迹出现了,我们的依赖中,多了一个go mod路径,这时原来报红的import路径消失了!!!

总结

通过以上可以轻松了解在Golang中go mod的使用方式。Go mod提供了一系列操作modules的命令,所有的go命令中现在已经内置了对module的支持,而不仅仅是go mod命令。例如使用go get时,会经常自动在后台添加、移除、升级、降级依赖包版本。

到此这篇关于Golang必知必会之Go Mod命令详解的文章就介绍到这了,更多相关Golang Go Mod命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang结构化日志log/slog包之slog.Record的用法简介

    golang结构化日志log/slog包之slog.Record的用法简介

    这篇文章主要为大家详细介绍了golang结构化日志log/slog包中slog.Record结构体的使用方法和需要注意的点,文中的示例代码讲解详细,需要的可以学习一下
    2023-10-10
  • 聊聊Go语言编译github上的项目遇到的坑

    聊聊Go语言编译github上的项目遇到的坑

    这篇文章主要介绍了解决Go语言编译github上的项目遇到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Go与Redis实现分布式互斥锁和红锁

    Go与Redis实现分布式互斥锁和红锁

    这篇文章主要介绍了Go与Redis实现分布式互斥锁和红锁,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 关于golang利用channel和goroutine完成统计素数的思路

    关于golang利用channel和goroutine完成统计素数的思路

    这篇文章主要介绍了golang利用channel和goroutine完成统计素数的思路详解,通过思路图分析及实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Go语言实现的最简单数独解法

    Go语言实现的最简单数独解法

    前面给大家介绍过使用javascript实现的简单的数独解法,小伙伴们都非常喜欢,今天我们再来分享一则go语言实现的简单的数独解法,有需要的小伙伴来参考下。
    2015-03-03
  • 详解如何使用Golang操作MongoDB数据库

    详解如何使用Golang操作MongoDB数据库

    在现代开发中,数据存储是一个至关重要的环节,MongoDB作为一种NoSQL数据库,提供了强大的功能和灵活的数据模型,与Golang的高性能和并发性能非常契合,本文将探讨Golang与MongoDB的完美组合,介绍如何使用Golang操作MongoDB数据库,需要的朋友可以参考下
    2023-11-11
  • golang模拟实现带超时的信号量示例代码

    golang模拟实现带超时的信号量示例代码

    这篇文章主要给大家介绍了关于golang模拟实现带超时的信号量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-09-09
  • 适合PHP同学的GoFrame框架使用体验及学习建议

    适合PHP同学的GoFrame框架使用体验及学习建议

    这篇文章主要为大家介绍了非常适合PHP同学使用的GoFrame框架设计思想使用体验及学习建议介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • golang 将[]byte转成16进制的实现

    golang 将[]byte转成16进制的实现

    这篇文章主要介绍了golang 将[]byte转成16进制的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言类型转换的方式有哪些

    Go语言类型转换的方式有哪些

    本文主要介绍了Go语言类型转换的方式有哪些,类型转换主要有4种,分别为断言类型转换、显式类型转换、隐式类型转换、强制类型转换,感兴趣的可以了解一下
    2023-11-11

最新评论