Golang Go语言 深入浅出 Go Modules
Golang Go语言 深入浅出 Go Modules
写了一篇总结,希望对大家有帮助,欢迎指点 https://blog.caojun.xyz/posts/gomodules/
哈哈
老曹牛逼!
看来楼主叫曹军
军曹电玩??
自己弄着写过关于这个文档…
最好还是不要在 gopath 中使用 go module… 并不怎么好使…
感觉就是 对以前只有一个 gopath 这种脑子里有屎的设定进行的一次填坑…
除此之外…用了 go moduel …编译什么的时候 编译器就会傻逼似的要去 pkg mod 下面找文件…即使当前 src 下面有源代码 也会被忽略 胃疼…
曹军🐮🍺
除此之外…用了 go moduel …编译什么的时候 编译器就会傻逼似的要去 pkg mod 下面找文件…即使当前 src 下面有源代码 也会被忽略 胃疼…
----------------------------------------
用 replace 就可以
这就是做 go 这门语言,之前啥都没有想好。然后又跟不上现代化语言必要的东西~ 各种历史包袱,难受
GO MODULE 目前还不成熟。。之前编译 gitea 的时候烦死我了,总是莫名其妙的说 hash 对不上,进去把 sum 删了就行…还是等一个优化吧
深入浅出。。。。我怀疑你再开车
怎么个意思?怎么操作的?
把 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 才能用?
#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语言开发者不可或缺的工具。