我是 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
1
0o0O0o0O0o 71 天前 via iPhone 2
新特性不一定第一时间用起来,但版本一定保持最新
|
2
loveuer 71 天前 via Android
range over func 已经用起来了,怎么说呢,个人体验很舒服。很多人提到复杂,其实官方用 iter 包帮你简化了,视觉观感也不错。
|
3
Felldeadbird 71 天前
我电脑开发环境还是 go version go1.20.2
我没有 win7 包袱,也对新语法没太大想法。目前先把业务写完,跑起来再考虑新语法的事情了。 |
4
AEnjoyable 71 天前 via Android
公司这边会在下一个版本.1 之后用.0 一直到下一个大版本.1 发布再用新版本
(小版本会一直跟进) |
5
NewYear 71 天前
golang 这种不注重版本号的语言,哪有什么大版本啊。
十几年了还是 1.x ,完全分不清哪些版本号是大版本。 我是选用特定版本:最后一个支持 Win7 的版本 |
6
zsh2517 71 天前
一般我首次配置环境的时候,会选择最新版本(如 OP 提到的 1.23.0 )/次新版本的最新小版本( 1.22.6 ),安装完之后很长一段时间就不会再换了。等到过一段时间(几个月),再次突然想起来的时候,就再次更新成此时的最新版本/此新版本的最新小版本。
我常用的三个语言来说,Go 有 goenv/smart-go-dl ,python 有 pyenv, Node.js 有 nvm/n ,版本更新也就几行命令的事。不勤更新单纯就是懒得关注第三位版本号( 例外: 1. 如果项目有指定特定的版本,那么用要求的版本运行和开发项目(没有就装),但是不会设置为该语言的默认版本。其他场景下仍然使用较新版本的环境 2. 对于不常用的语言且系统包管理器内的能满足需求,不单独自己安装额外的管理工具,直接用系统源的包,系统源是啥就用啥(对我来说如 Java 、Rust 、C/C++) |
7
zsh2517 71 天前
@zsh2517 简单概括就是,不一定会用新特性,但是版本会持续更新。基本始终用最新/次新大版本,一段时间更新一次。go/python 这种 major 版本不变的按 minor 来,node 这种 major 会更新的按 major 来(三位版本号通常叫做 major.minor.patch ,参考 https://semver.org/lang/zh-CN/)
|
9
ClarkAbe 71 天前
每天 `pacman -Syu` 就更新了, 有最新当然是最新的好...甚至线上服务器都是 Arch
|
10
masterclock 71 天前
不主动更新,直到需要某个特性,外部包依赖强制要求升级等
|
11
Desdemor 71 天前
我现在用 1.23, 但是泛型都还没用上
|
12
layxy 71 天前
一直保持最新,go 的版本兼容性还行,编译后扔到哪里都可以,而且 go 的三方包更新也很快,有部分会用到新版本特性,所以干脆一直保持最新版本
|
13
mshadow 71 天前 via Android
之前一直更新,后面停在 1.21 最后的小版本。1.22 之后理念不符。
|
14
zdt3476 71 天前
我们公司是生产环境会用次新的偶数版本。
|
15
ByteCat 71 天前
一直最新 scoop update *
|
16
georgetso 71 天前
@0o0O0o0O0o 破坏性更新怎么办?
|
17
sunny352787 71 天前
生产环境用次新大版本,最新 1.23 那么线上就可以用 1.22
开发组员与线上版本同步,组长使用最新版本进行前瞻测试并制定规范,比如这次的 1.23 这个 range 就是我试过之后禁止组员使用的 |
18
cnbattle 71 天前
go 1.x 都是向下兼容,至今没有破坏性更新, 所有无特殊需要 都是更新最新版,新版的一些优化,反而可以让之前的程序更高效些
|
19
hingle 71 天前
go 1.23 也不支持 macOS 10.15 了
|
20
0o0O0o0O0o 71 天前
@georgetso #16
1. major 之外不会有**语言层面的**破坏性更新,major 维护时间是一年,有半年的时间做迁移 2. major 的破坏性更新很少,在因为修复错误或者漏洞而不得不破坏时,也承诺提供机制来保持兼容性 https://go.dev/doc/go1compat https://go.dev/doc/godebug 3. 停止维护的版本会有已知漏洞,我觉得这个优先级更高 |
21
fuxiaohei 71 天前 1
Go 会维护最近的两个或三个版本。如果没用上新特性,可以跟老版本的最近更新。比如发布了 1.23.0 ,就用 1.22.6 。以后 1.24 发布了,用 1.23.x 。
|
23
georgetso 71 天前
|
24
knva 71 天前
不知道哪个是最新版本。
|
25
DefoliationM 71 天前 via Android
永远最新。
|
26
securityCoding 71 天前
rc 前一个版本
|
27
rekulas 71 天前
我一般落后 2 个月更新到最新 毕竟向下兼容做的还是可以基本问题不大
|
28
815979670 71 天前 1
个人习惯 用上一个子版本的最新版 就是第二位版本号 -1 ,然后第三位最新版
|
29
lasuar 71 天前
只要没大的 bug 和你需要的功能更新,就没必要追。目前一直用的是 1.20.12 (注意小版本号是最高的那个),泛型还是有必要的,因为 lo 这个泛型库特别需要。
|
30
gouwazi 71 天前
之前是立马就更新,但是自从 1.21.0 的 bug( https://github.com/golang/go/issues/61881)影响到业务后,现在是等.1 出来再更新
|
31
fishcat 70 天前
忘了啥时候,遇到过一个 bug, 只有新版本有,后来就不怎么跟着升级版本
|
32
xiaozirun 70 天前
很多时候是为了用某些包的新功能才升级版本😂
|
34
zi 70 天前
我用.0 的上一个版本,直到下一个.0 发布再一次过升级到该.0 的上一个版本。
也就是一直保持用第二位的最后一个小版本 |