各位大佬们怎么进行 golang 项目的多版本控制?

2025 年 2 月 28 日
 Twelveeee

新老项目很多,怎么进行 golang 的版本控制?

这边推荐两个库(非推广)

golang 多版本 下载删除 管理 https://github.com/fsgo/smart-go-dl

自动切换 go 执行的二进制文件 https://github.com/fsgo/bin-auto-switcher

效果如图

bin-auto-switch go 版本是 go1.22

ddns-go go 版本是 go1.20

直接运行 go 命令就能直接使用

除此之外,vscode goroot 的配置我感觉是有问题的,哪怕我配置了 go.root 为 1.21 的目录 ,只要我默认的版本是 go1.20 ,那么我的 maps 就一直会报错(maps 为 go1.21 新增)

bin-auto-switch 本质是替换了 go 的命令,然后通过读取各种配置,比如 go.mod 去判断应该执行的 go 的版本

自从用了 bin-auto-switch 之后,除了牺牲执行时的一些性能损耗,用起来非常丝滑,代码提示和代码跳转都没有问题,都能自动切到对应的版本。

最后,俺的博客 https://blog.twelveeee.top/2025/Go/go_version_control/ 记录了这两个项目的用法(虽然这两个项目的 readme 都很完整)(涨涨 pv 谢谢!)

3942 次点击
所在节点    Go 编程语言
24 条回复
Twelveeee
2025 年 3 月 1 日
至于为什么不升级 go 的版本,有些项目不是我们团队负责的,我就上去加一两行代码。

升级完了 golang 版本还要去改 makefile ,还要担心上线出了问题,所以还是保留原状,不升的好。
neoblackcap
2025 年 3 月 1 日
没记错,golang 是高版本向下兼容的,而且编译方式都是静态编译,相当于基本上所有依赖都是有源码。直接升工具链没啥问题吧
skiy
2025 年 3 月 1 日
好主意。回头我实现一下我写的 GVM 工具。加个 switch

![img]( https://upload.cc/i1/2025/03/01/guMEbH.png)
Cannian
2025 年 3 月 1 日
@povsister 造轮子的时候就要降版本号了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1114965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX