前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >go mod 命令详解

go mod 命令详解

作者头像
恋喵大鲤鱼
发布于 2023-12-30 00:41:59
发布于 2023-12-30 00:41:59
2.2K00
代码可运行
举报
文章被收录于专栏:C/C++基础C/C++基础
运行总次数:0
代码可运行

1.关于模块

模块(Modules)是 Go 1.11 版本引入的一依赖管理机制。

一个模块是 Go packages 的集合,定义在项目根目录下的 go.mod 文件。go.mod 文件定义了模块的路径,这也是使用当前项目中包的导入路径。go.mod 文件还定义了模块的依赖项,这些是项目成功构建所需的其他模块。每个依赖项都被编写为模块路径和特定的语义版本。

从 Go 1.11 开始,go 命令允许在当前目录或任何父目录有 go.mod 文件时使用 module,条件是目录位于 GOPATH/src 之外。在 GOPATH/src 中,即使找到了 go.mod,为了兼容性起见,go 命令仍然在旧的 GOPATH 模式下运行。从 Go 1.13 开始,模块将是包管理的默认模式。

2.关于 go mod

go mod 命令是与 Go 模块相关的命令行工具,提供对模块的访问和操作。

注意,所有 go 命令都内置了对模块的支持,不仅仅是go mod。例如,日常添加、删除、升级、降级,应该使用go get

有关模块功能的概述,请参阅go help modules

3.格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod <command> [arguments]

子命令有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
download    download modules to local cache
edit        edit go.mod from tools or scripts
graph       print module requirement graph
init        initialize new module in current directory
tidy        add missing and remove unused modules
vendor      make vendored copy of dependencies
verify      verify dependencies have expected content
why         explain why packages or modules are needed

关于子命令的详细说明请使用go help mod <command>

4.示例

(1)初始化模块。

在当前目录中初始化新模块,模块名为你项目名。一般是在首次创建项目时使用,将生成go.mod文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod init [module-path]

(2)添加依赖。

通过 go get 命令可以添加依赖:将依赖项添加到 go.mod 文件,并将依赖项的版本信息记录在 go.sum 文件中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get [package-path]

(3)下载依赖的模块到本地 cache。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载所有依赖的模块
go mod download [all]

# 下载指定名称的模块
go mod download PATH@VERSION

(4)添加缺少的模块并删除未使用的模块,一般用来更新 go.mod 和 go.sum 文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod tidy

(5)查看依赖。

通过 go list 命令可以查看项目的依赖,其中 -m 选项表示列出模块而不是包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go list -m all

(6)查看可升级的依赖。

go list 的 -u 选项将在依赖的模块后面通过中括号显示可用的最新版本(如果有的话)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go list -m -u all

my/main/module
golang.org/x/text v0.3.0 [v0.4.0] => /tmp/text
rsc.io/pdf v0.1.1 (retracted) [v0.1.2]

(7)升级依赖。

使用 go get 的 -u 选项, 可以将指定依赖升级到最新的次版本号(minor)或修订号(patch)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get -u [package-path]

(8)清理模块缓存。

清理模块缓存表示删除存储在本地已下载的模块文件。模块缓存文件存放在 GOPATH/pkg/mod 目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go clean -modcache

该命令将会删除 GOPATH/pkg/mod 目录。


参考文献

go command - cmd/go Go Modules Reference

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验