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

69 天前
 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 谢谢!)

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

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

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

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

https://yangjunhui.monster/t/1114965

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

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

© 2021 V2EX