go mod常用命令

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

1 介绍(go mod)

1.1、go mod是什么

  go mod 是Golang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

  之前Golang 主要依靠vendor和GOPATH来管理依赖库,vendor相对主流,但现在官方更提倡go mod。

1.2、go mod初始化及使用

下载官方包1.11(及其以上版本将会自动支持gomod) 默认GO111MODULE=auto(auto是指如果在gopath下不启用mod)
Golang 提供一个环境变量 GO111MODULE 来设置是否使用mod,它有3个可选值,分别是off, on, auto(默认值),具体含义如下:

off: GOPATH mode,查找vendor和GOPATH目录
on: module-aware mode,使用 go module,忽略GOPATH目录
auto: 如果当前目录不在$GOPATH 并且 当前目录(或者父目录)下有go.mod文件,则使用 GO111MODULE, 否则仍旧使用 GOPATH mode。

修改 GO111MODULE 的值的语句是:set GO111MODULE=on 。

在使用模块的时候, GOPATH 是无意义的,不过它还是会把下载的依赖储存在 GOPATH/src/mod 中,也会把 go install 的结果放在 GOPATH/bin(如果 GOBIN 不存在的话)

go mod download 下载模块到本地缓存,缓存路径是 $GOPATH/pkg/mod/cache
go mod edit 是提供了命令版编辑 go.mod 的功能,例如 go mod edit -fmt go.mod 会格式化 go.mod
go mod graph 把模块之间的依赖图显示出来
go mod init 初始化模块(例如把原本dep管理的依赖关系转换过来)
go mod tidy 增加缺失的包,移除没用的包
go mod vendor 把依赖拷贝到 vendor/ 目录下
go mod verify 确认依赖关系
go mod why 解释为什么需要包和模块

注意有几个坑的地方:

go mod 命令在$GOPATH 里默认是执行不了的,因为 GO111MODULE 的默认值是 auto。默认在$GOPATH 里是不会执行, 如果一定要强制执行,就设置环境变量为 on。

go mod init 在没有接module名字的时候是执行不了的,会报错 go: cannot determine module path for source directory。可以这样执行:

$ go mod init github.com/jiajunhuang/hello

否则就要在 main.go 里加上导入声明,例如:

$ cat main.go
package main
 
func main() {
    println("Hello world")
}
$ go mod init
go: cannot determine module path for source directory /Users/jiajun/hello (outside GOPATH, no import comments)
$ vim go.mod
$ cat go.mod
module github.com/jiajunhuang/hello
$ go mod init
go mod init: go.mod already exists
$ rm go.mod
$ vim main.go
$ cat main.go
package main // import "github.com/jiajunhuang/hello"
 
func main() {
    println("Hello world")
}
$ go mod init
go: creating new go.mod: module github.com/jiajunhuang/hello
$ ls
go.mod  main.go
$ cat go.mod
module github.com/jiajunhuang/hello

当然,如果在已有代码的仓库里执行是不存在这个问题的。

2 命令

2.1 指定module的根目录并生成go.mod文件

go mod init example.com/hello

2.2 下载并添加依赖到go.mod文件中

go build, go test

2.3 查看module下的所有依赖

go list -m all

2.4 更新稳定版依赖

go get rsc.io/sampler

2.5 更新为指定版本依赖

go list -m -versions rsc.io/sampler
 
rsc.io/sampler v1.0.0 v1.2.0 v1.2.1 v1.3.0 v1.3.1 v1.99.99
 
go get rsc.io/sampler@v1.3.1

2.6 清理无用的依赖

go mod tidy

2.7 将依赖复制到项目路径的vendor文件夹中

go mod vendor

2.8 忽略cache里的包,只使用vendor目录里的依赖进行编译

go build -mod = vendor

2.9 校验依赖并查看是否有修改

go mod verify

原文链接:https://blog.csdn.net/zzhongcy/article/details/97243826
可参考文献:

  1. https://blog.csdn.net/Lazybones_3/article/details/89355133
  2. https://blog.csdn.net/kevinh531/article/details/88691870
  3. https://jiajunhuang.com/articles/2018_09_03-go_module.md.html
  4. https://blog.csdn.net/qq_33296108/article/details/88184060
go mod常用命令 [golang 学习笔记2] 1.go mod介绍 go modGolang 1.11 版本引入的官方包(package)依赖管理工具。 Golang 提供一个环境变量GO111MODULE 来设置是否使用mod,它有3个可选值,分别是off, on, auto(默认值),具体含义如下: off: GOPATH mode,查找vendor和GOPATH目录 on:module-aware mode,使... 阅读详情

相关推荐

(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破

该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。

LJ1147517021的博客 1342

Go mod操作命令大全】

Go mod操作命令大全,Go mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。 Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。

m0_37698164的博客 4116

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 903

go mod指令大全

【代码】go mod指令大全。

kgs0716的博客 898

Golang 必知必会Go Mod命令

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

猫轻王的博客 2万+

1. GO 之基础命令

go mod命令。

qq_48480384的博客 5485

Go语言(三)

数组的长度是其类型的一部分,因此数组不能改变大小。这看起来是个限制,不过没关系,Go 提供了更加便利的方式来使用数组。试着修改示例程序中的切片操作,向外扩展它的容量,看看会发生什么。每个数组的大小都是固定的。随着时间的推移,有些依赖可能不再需要,或者新的依赖可能被添加进来。是一个 Go 语言的命令,用于自动添加或删除不必要的模块依赖项,使。是一个非常有用的命令,可以帮助开发者自动管理项目的模块依赖,确保。切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。这是一个在Go项目的模块管理中的命令。

seanyang_的博客 1441

知识分享之Golang——go mod常用命令解析

知识分享之Golang——go mod常用命令解析 背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。 开发环境 操作系统:windows 10 使用工具:Goland开发工具 golang版本:1.17 内...

CN華少的博客 340

详解Golang中的go mod以及Golang包

本文介绍了Golang中的包管理和使用。主要内容包括:1) 包的三种类型(系统内置包、自定义包和第三方包);2) Go1.11后引入的gomod包管理工具及其常用命令;3) 自定义包的创建规则和导入方式;4) init()函数的特性和执行顺序;5) 第三方包的使用流程,包括查找、安装和依赖管理。文中重点说明了如何通过gomod管理项目依赖,以及如何定义和使用自定义包,同时介绍了匿名导入和包别名等实用技巧。

m0_75163045的博客 1583

go mod常用命令 以及 常见问题

最近接触到go mod,网上查了查资料,这里记录一下。 1 介绍 1.1、go mod是什么 go modGolang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 之前Golang 主要依靠vendor和GOPATH来管理依赖库,vendor相对主流,但现在官方更提倡go mo...

zzhongcy的专栏 7万+

Go常用命令go mod

文章目录Go modGo mod 的三种开启模式范式command命令downloadeditgraphinittidyvendorverifywhygo.mod文件动词类型:常见错误汇总go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'$GOPATH/go.mod exists but should not Go mod Go mod 的三种开启模式 GO111MODULE on:支持Go

EricLee 1637

go mod 常用命令

1. download # download modules to local cache(下载依赖包) go mod download 2. edit # edit go.mod from tools or scripts(编辑go.mod) go mod edit 3. graph # print module requirement graph (打印模块依赖图) go mo...

niki_yang 1686

go mod 几个常用命令

go mod 生成 vendor go mod可以使项目从GOPATH的强制依赖中独立出来,也就是说你的项目依赖不再需要放在在GOPATH下面了,每个工程的依赖包、版本可由当前工程独立管理! GO111MODULE GO111MODULE有三个值:off,on和auto(默认值)。 GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。 GO111MODULE=on,go命令行会使用modul..

优秀技术文章收录 4413

Golang的学习记录(一)补

Go模块管理三剑客分工明确: 1. go mod是项目经理 - init初始化项目 - tidy整理依赖关系 - vendor生成离线包 管理版本和依赖,确保工程规范 2. go get是采购员 - 负责下载第三方库 - 自动更新go.mod清单 - 遇到main包会顺手安装 但容易弄乱项目依赖 3. go install是安装工 - 专注安装可执行工具 - 不污染项目依赖清单 - 必须指定@版本号 是安装工具的标准姿势 三者协作:mod管项目,get下源码,install装工具,共同构建Go的工程化

2301_80829687的博客 967

go mod 常用命令解析

1.go mod init 初始化一个go.mod文件到当前目录, 实际上是创建了一个以当前目录为模块的mod。 如果go.mod已经有了就会报错:go源码如下: if _, err := os.Stat("go.mod"); err == nil { base.Fatalf("go mod init: go.mod already exists") } ...

dobe85601的博客 863

Golang modules 初探

今天天色刚刚亮起,起床看到 golang 1.11 正式发版了,有着两个重要的特性:modules 和 WebAssembly。本博文只要说的是 modules,cong...

Go中国 1642

go mod 常用命令笔记

go Modules 的使用 配置Environment地址:https://goproxy.cn,direct 命令 注释 go mod init 初始化项目,在当前项目下跟main.go go mod tidy 找到项目的第三方依赖 ...

༺墨༒眉༻ 233

flutter web hello world和go mod常用命令

flutter web 注意安卓studio sdk—》 sdk tools,不要勾不显示obsolete,然后下载android sdk tools(obsolete) 上这个网站,下载beta版本:不要下载stable然后转化,太慢了。https://flutter.dev/docs/development/tools/sdk/releases google的东西,你懂得。官方换源不好用,用这...

wangmarkqi的博客 218

第十章 go mod操作

go Moudle常见错误。【go mod开启】需要使用别人包时,使用。

shanshui521的博客 511
上一篇: 2021-01-06
下一篇: 同一台电脑安装两个不同版本(5.5到8.0)mysql
zyecust
博客等级 码龄7年 5粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值