Golang Go语言 深入浅出 Go Modules

发布于 1周前 作者 bupafengyu 来自 Go语言

Golang Go语言 深入浅出 Go Modules

写了一篇总结,希望对大家有帮助,欢迎指点 https://blog.caojun.xyz/posts/gomodules/

33 回复

哇,军哥好。

更多关于Golang Go语言 深入浅出 Go Modules的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


老曹牛逼!

看来楼主叫曹军

军曹电玩??

写了没人看,厚着脸皮来发一下,给自己一点动力

自己弄着写过关于这个文档…

最好还是不要在 gopath 中使用 go module… 并不怎么好使…

感觉就是 对以前只有一个 gopath 这种脑子里有屎的设定进行的一次填坑…

除此之外…用了 go moduel …编译什么的时候 编译器就会傻逼似的要去 pkg mod 下面找文件…即使当前 src 下面有源代码 也会被忽略 胃疼…

曹军🐮🍺


除此之外…用了 go moduel …编译什么的时候 编译器就会傻逼似的要去 pkg mod 下面找文件…即使当前 src 下面有源代码 也会被忽略 胃疼…

----------------------------------------
用 replace 就可以

GOPATH 的设计和新版本的 GO MODULE 再加上这个网络能把你搞疯,我觉得先等 Go 稳一稳再上车好

这就是做 go 这门语言,之前啥都没有想好。然后又跟不上现代化语言必要的东西~ 各种历史包袱,难受

GO MODULE 目前还不成熟。。之前编译 gitea 的时候烦死我了,总是莫名其妙的说 hash 对不上,进去把 sum 删了就行…还是等一个优化吧

深入浅出。。。。我怀疑你再开车

怎么个意思?怎么操作的?

bee 的热更新不能用在 go modules 上,难受

把 GO111MODULE 环境变量 unset 或者设置为 auto 就可以关掉 module 模式,这样就不回去 pkg/mod 目录找了

网络问题很容易解决,是开发的基础设施啊

我暂时还没遇到坑

请大佬指点

bee 的热更新本来也是方便开发,我的理解良好的语义化的版本管理更适合正式发布

#17 我知道每个问题都有解决办法,但是这一堆问题摆在初学者面前就是大山,我也并不是说不建议使用,作为兴趣完全可以搞一搞,但想要做主业需要三思


GOPROXY 了解一下
1.13 还可以设置 GOPRIVATE 来访问私有仓库
再加上 GO SUM 来验证
感觉 1.13 可以上车了

#21 golang 新版本支持代理(第三方库镜像)了,
国内七牛、阿里提供了国内镜像,算是解决了网络问题。

很好用,没遇到问题。
之前的第三方方案都没用过,因为花了十分钟没看懂…
go mod 就很好理解了。

没有写 goproxy?
1.13 出了 sumdb 或者可以忽略 sum,或者设置私有 repo,个人觉得 1.13 已经完整了

忽略了这一点,回头抽时间更新一下。主要平时公司和家里都是无障碍网络……

一般这种用 github 作为第三方包源的仓库,都是要先 fork 才能用?

不需要,也不建议。使用 fork 的不方便同步 upstream 的更新。除非你要自己修改开源的东西

#16 要是这么做 就不是解决问题 而是回避问题了 在 go mod 开和不开 之间 反复横跳 ?

go module 是真的好用了,govendor、go dep 是真的不行

类似这样,直接可以用 replace 把远端仓库的 replace 为本地源码或别的仓库
module github.com/notedit/rtclive

require (
github.com/akamensky/argparse v0.0.0-20190115094700-b33e05fb8d69
github.com/gin-contrib/cors v0.0.0-20190101123304-5e7acb10687f
github.com/gin-gonic/gin v1.3.0
github.com/gofrs/uuid v3.2.0+incompatible
github.com/notedit/media-server-go v0.1.12
github.com/notedit/rtmp-lib v0.0.2
github.com/notedit/sdp v0.0.1
gopkg.in/yaml.v2 v2.2.2
)

replace github.com/notedit/media-server-go v0.1.12 => …/…/media-server-go

那我去实践下…

Go Modules是Go语言官方推出的依赖管理工具,它极大地提升了Go项目依赖管理的效率和灵活性。以下是对Go Modules的深入解析:

Go Modules的基本概念

  • 模块:包含go.mod文件的目录,是Go包的集合,一起发布、版本控制和分发。
  • :同一目录中一起编译的Go源文件的集合。
  • go.mod文件:定义了模块的名称及其依赖包,通过导入路径和版本描述一个依赖。
  • go.sum文件:供Go命令在构建时判断依赖包是否合法。

Go Modules的优势

  • 简化依赖管理:通过go.mod文件清晰描述依赖关系。
  • 支持版本管理:允许同一个模块多个版本共存,解决依赖冲突。
  • 全局缓存:不同项目的相同模块版本,只会在服务器上缓存一份,节省空间。

Go Modules的使用

  • 初始化模块:使用go mod init命令初始化一个新模块。
  • 添加依赖:使用go get命令添加依赖,go.mod文件将自动更新。
  • 整理依赖:使用go mod tidy命令添加丢失的模块,并移除无用的模块。
  • 验证依赖:使用go mod verify命令检查依赖的完整性。

综上所述,Go Modules为Go项目提供了现代、高效和灵活的依赖管理方式,是Go语言开发者不可或缺的工具。

回到顶部