特别放送 | Go Modules依赖包管理全讲
该思维导图由 AI 生成,仅供参考
Go Modules 简介
- 深入了解
- 翻译
- 解释
- 总结
Go Modules是Go官方推出的包管理方案,具有版本管理、多版本共存、哈希值校验等特性。Go1.14版本后,Go官方建议在生产环境中使用Go Modules。文章介绍了Go包管理的历史,包括GOPATH、Vendoring、多种依赖包管理工具出现以及Go Modules的推出。Go Modules的命令包括download、edit、graph、init、tidy、vendor、verify和why。此外,文章还介绍了包和模块的概念,以及Go中的四种包类型。通过本文,读者可以快速了解Go Modules的特性和命令,以及Go包管理的发展历程。文章还介绍了Go Modules的环境变量GO111MODULE的设置,模块下载方式,包括通过代理下载、指定版本号下载和按最小版本下载。另外,还介绍了Go模块代理的好处以及如何设置私有模块的访问。最后,文章详细介绍了Go Modules中的两个重要文件go.mod和go.sum的作用。文章还详细介绍了go.mod文件的语句功能、版本号格式和修改方法,为读者提供了全面的Go Modules知识。文章还介绍了go.sum文件的内容、生成和校验流程,以及模块下载流程。总的来说,本文全面介绍了Go Modules的特性、命令和文件作用,为读者提供了深入了解Go包管理的机会。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(12)
- 最新
- 精选
- josephzxy置顶“思考下,如果不提交 go.sum,会有什么风险?” 如果go get时,GOSUMDB=off,就没有办法校验下载的包是否被篡改。 推荐两篇博文可做辅助阅读 https://zaracooper.github.io/blog/posts/go-module-tidbits/ https://insujang.github.io/2020-04-04/go-modules/
作者回复: 老哥,回答给满分~
2021-09-09311 - Juniper问下老师,go get和go mod download的场景有什么不一样吗,不太明天go mod download这个命令的场景
作者回复: go get是下载单个包。 go mod download是下载go.mod中记录的包(1个/多个)
2021-09-303 - typesgo get如何拉取指定分支的指定commit id
作者回复: 还不支持指定commit id get
2021-09-242 - 奕最后一个流程图中, GOSUMDB=off 的时候,还会和 go.sum 文件中的 hash 做对比吗?
作者回复: 不会的
2022-04-01 - 奕开启 go module 的环境变量 GO1111MODULE 为什么中间有 3个1?
作者回复: 应该是GO1.11的意思
2022-04-01 - 陈东goland构建module并引用方包logrus,能go run代码,但是logrus.Println 中的(Println )一直显示红色报错,尝试很多办法,解决 go构建约束问题,错误提示是Build constraints exclude all Go files in c:代码目录文件夹? 尝试以下办法解决不了 1、searcheverything 搜索后删除所有包, $GOPATH目录下,把对应的包删除,重新go get,还是不行. 2、go get -u -v github.com/karalabe/xgo 3、Right click -> Mark folder as not excluded. 4、引用包报错,重启电脑,查看goproxy配置,重装goland等等都解决不了。 怎么解决,希望得到老师帮助,谢谢。
作者回复: 试试执行以下命令重新再构建下: export CGO_ENABLED=1 export GOOS=linux
2021-12-18 - yss如果不提交 go.sum,会有什么风险? 当别人使用项目并下载依赖时,无法验证他们使用的依赖和你开发时的依赖是否一致,存在下载到被篡改代码的风险
作者回复: 对的,是这个风险。
2021-10-28 - typesgo build或者go run的时候,如果依赖包都已经下载到 pkg/mod下了,还会进行校验吗?? 自己测试了下已经是不会校验的
作者回复: 不会校验的,缓存中的文件时只读的,所以只需要校验一次
2021-09-24 - helloworld“如果不指定版本号,Go Modules 会根据自定义的规则,选择最小版本来下载。”,这里说的最小版本指的是latest版本吗
作者回复: 不是。 语义化版本号之间是可以对比的,比如:v1.1.1 < v1.1.2。 按语义化版本号对比规则对比后的最小值。
2021-09-104 - 兔嘟嘟解惑了,整个中文互联网上都没这样好好讲go module的,至少我没找到。导致我一开始搞项目的时候,在某个地方纠结了好久2021-12-194