Golang Go语言中 += 包版本

来自 Go 团队内部关于 Go 包版本集成的最新成果 !

来自 Russ Cox 大神的最新博文: https://research.swtch.com/vgo-intro

翻译见这里: https://lingchao.xin/post/vgo-intro.html
Golang Go语言中 += 包版本


更多关于Golang Go语言中 += 包版本的实战教程也可以访问 https://www.itying.com/category-94-b0.html

23 回复

国际惯例,自沙

更多关于Golang Go语言中 += 包版本的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


加版本号,只会让项目更复杂。。。

现在还只是草案啊 不知道目前 go 主流的依赖管理是怎么做的

嗯是的,是草案;主流管理是使用 vendor

vendor 我用起来毛病挺多的,然后干脆就不用了。

目前 dep 用的挺好的阿,没啥问题。

dep 搞不定同一个包如果使用了不同依赖都依赖于同一个包但是版本不同的情况,这个文中有提到

感觉最后还是会搞出 npm 那种的样子

和 npm 不一样 ,npm 有 lock 文件; vgo 没有

我是说现在各种方案都不能令人满意,可能到最后最令人满意的还是会发展成 npm 那种包管理方案

这两年从手动写脚本 install.sh 到 vendor 再到 godep 现在到 glide,感觉永远跟不上最新趋势……

先静观其变。。。

靠谱,严格禁止了不同版本的棱形依赖。

有了 go.mod ,就可以替代 gopath 了

千万别像 npm 那样无限引用…
目前 vendor 用起来起来还是挺好的 只保留一个版本

歪个楼,PHP 大法好,composer 的扁平化版本管理强烈建议 go 参考下

一点都不像 npm,看起来更像 rust 的 cargo

我是使用 glide 的

昨天在 YC 看到一模一样标题

期待中

另外有一个问题,你的翻译得到许可了吗? Russ Cox 并没有说明他的文章是以什么许可证公开的。原文的评论里能看到一个日本评论者希望得到日语翻译的许可。

现在那个工具可以配置 golang.org 镜像到 github.com

在Go语言中,处理包版本通常不直接通过 += 这样的操作符来完成,而是依赖于Go的模块系统(自Go 1.11版本引入)和go.mod文件来管理依赖关系和版本。

Go语言的模块系统允许你为项目指定依赖包的精确版本,或者定义一个版本范围。这主要通过go.mod文件中的require指令来实现。例如,如果你的项目依赖于某个包的特定版本,你可以在go.mod文件中添加如下行:

require example.com/somepackage v1.2.3

如果你想要更新到这个包的最新版本,可以使用go get命令,如:

go get -u example.com/somepackage

这条命令会更新go.mod文件中的版本信息,并可能下载新的包版本。然而,需要注意的是,使用-u标志可能会将依赖升级到不兼容的版本,因此在实际项目中应谨慎使用。

在Go中,没有直接的+=操作符用于包版本的增量更新。版本管理是通过明确的版本号和Go的模块系统来控制的。当你需要更新包版本时,应该手动编辑go.mod文件或使用go get命令,并确保所选版本与你的项目兼容。

总之,Go语言的包版本管理依赖于其模块系统,而不是通过简单的操作符来实现。理解并正确使用这一系统对于维护项目的稳定性和可维护性至关重要。

回到顶部