大家用 Go 写程序时会追新版本吗?追大版本还是追小版本?

111 天前
 HFX3389

我是 Go 语言新手,感觉 Golang 发版发的挺勤快的,我学习使用这个语言时最新的版本是1.22.4 (发布于 2024-06-04 )

自从安装完环境后就很少管,今天上官网看了下大版本更新已经出到1.23.0 (发布于 2024-08-13 )了,小版本更新也出到1.22.6 (发布于 2024-08-06 )

之前论坛也有过讨论1.23 的新特性 range over func 帖子,帖子评论也说新特性有好有坏。

而且 Go 也有过从 1.21 开始不支持 Win7 的例子,虽然可以撤销数个 commit 让 1.21 、1.22 重新支持回 Win7 ,具体操作在这个帖子的第 22 楼和第 23 楼,但这总归不是好办法。

说不定哪个新版本就会导致现在旧的“屎山”代码不能编译或不支持旧系统,所以想问一下大伙用 Go 写程序时会追新版本吗?追大版本还是追小版本?

还是说你发任你发 我用 Java8

4639 次点击
所在节点    Go 编程语言
35 条回复
0o0O0o0O0o
111 天前
新特性不一定第一时间用起来,但版本一定保持最新
loveuer
111 天前
range over func 已经用起来了,怎么说呢,个人体验很舒服。很多人提到复杂,其实官方用 iter 包帮你简化了,视觉观感也不错。
Felldeadbird
111 天前
我电脑开发环境还是 go version go1.20.2

我没有 win7 包袱,也对新语法没太大想法。目前先把业务写完,跑起来再考虑新语法的事情了。
AEnjoyable
111 天前
公司这边会在下一个版本.1 之后用.0 一直到下一个大版本.1 发布再用新版本
(小版本会一直跟进)
NewYear
111 天前
golang 这种不注重版本号的语言,哪有什么大版本啊。

十几年了还是 1.x ,完全分不清哪些版本号是大版本。

我是选用特定版本:最后一个支持 Win7 的版本
zsh2517
111 天前
一般我首次配置环境的时候,会选择最新版本(如 OP 提到的 1.23.0 )/次新版本的最新小版本( 1.22.6 ),安装完之后很长一段时间就不会再换了。等到过一段时间(几个月),再次突然想起来的时候,就再次更新成此时的最新版本/此新版本的最新小版本。

我常用的三个语言来说,Go 有 goenv/smart-go-dl ,python 有 pyenv, Node.js 有 nvm/n ,版本更新也就几行命令的事。不勤更新单纯就是懒得关注第三位版本号(

例外:

1. 如果项目有指定特定的版本,那么用要求的版本运行和开发项目(没有就装),但是不会设置为该语言的默认版本。其他场景下仍然使用较新版本的环境
2. 对于不常用的语言且系统包管理器内的能满足需求,不单独自己安装额外的管理工具,直接用系统源的包,系统源是啥就用啥(对我来说如 Java 、Rust 、C/C++)
zsh2517
111 天前
@zsh2517 简单概括就是,不一定会用新特性,但是版本会持续更新。基本始终用最新/次新大版本,一段时间更新一次。go/python 这种 major 版本不变的按 minor 来,node 这种 major 会更新的按 major 来(三位版本号通常叫做 major.minor.patch ,参考 https://semver.org/lang/zh-CN/)
alsas
111 天前
@NewYear 同使用支持 win7 的版本 1.20.14
ClarkAbe
111 天前
每天 `pacman -Syu` 就更新了, 有最新当然是最新的好...甚至线上服务器都是 Arch
masterclock
111 天前
不主动更新,直到需要某个特性,外部包依赖强制要求升级等
Desdemor
111 天前
我现在用 1.23, 但是泛型都还没用上
layxy
111 天前
一直保持最新,go 的版本兼容性还行,编译后扔到哪里都可以,而且 go 的三方包更新也很快,有部分会用到新版本特性,所以干脆一直保持最新版本
mshadow
111 天前
之前一直更新,后面停在 1.21 最后的小版本。1.22 之后理念不符。
zdt3476
111 天前
我们公司是生产环境会用次新的偶数版本。
ByteCat
111 天前
一直最新 scoop update *
georgetso
111 天前
@0o0O0o0O0o 破坏性更新怎么办?
sunny352787
111 天前
生产环境用次新大版本,最新 1.23 那么线上就可以用 1.22
开发组员与线上版本同步,组长使用最新版本进行前瞻测试并制定规范,比如这次的 1.23 这个 range 就是我试过之后禁止组员使用的
cnbattle
111 天前
go 1.x 都是向下兼容,至今没有破坏性更新, 所有无特殊需要 都是更新最新版,新版的一些优化,反而可以让之前的程序更高效些
hingle
111 天前
go 1.23 也不支持 macOS 10.15 了
0o0O0o0O0o
111 天前
@georgetso #16

1. major 之外不会有**语言层面的**破坏性更新,major 维护时间是一年,有半年的时间做迁移
2. major 的破坏性更新很少,在因为修复错误或者漏洞而不得不破坏时,也承诺提供机制来保持兼容性 https://go.dev/doc/go1compat https://go.dev/doc/godebug
3. 停止维护的版本会有已知漏洞,我觉得这个优先级更高

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

https://www.v2ex.com/t/1068285

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

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

© 2021 V2EX