Golang Go语言中大家写程序时会追新版本吗?追大版本还是追小版本?
我是 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
Golang Go语言中大家写程序时会追新版本吗?追大版本还是追小版本?
更多关于Golang Go语言中大家写程序时会追新版本吗?追大版本还是追小版本?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
新特性不一定第一时间用起来,但版本一定保持最新
更多关于Golang Go语言中大家写程序时会追新版本吗?追大版本还是追小版本?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
range over func 已经用起来了,怎么说呢,个人体验很舒服。很多人提到复杂,其实官方用 iter 包帮你简化了,视觉观感也不错。
我电脑开发环境还是 go version go1.20.2
我没有 win7 包袱,也对新语法没太大想法。目前先把业务写完,跑起来再考虑新语法的事情了。
golang 这种不注重版本号的语言,哪有什么大版本啊。
十几年了还是 1.x ,完全分不清哪些版本号是大版本。
我是选用特定版本:最后一个支持 Win7 的版本
一般我首次配置环境的时候,会选择最新版本(如 OP 提到的 1.23.0 )/次新版本的最新小版本( 1.22.6 ),安装完之后很长一段时间就不会再换了。等到过一段时间(几个月),再次突然想起来的时候,就再次更新成此时的最新版本/此新版本的最新小版本。
我常用的三个语言来说,Go 有 goenv/smart-go-dl ,python 有 pyenv, Node.js 有 nvm/n ,版本更新也就几行命令的事。不勤更新单纯就是懒得关注第三位版本号(
例外:
1. 如果项目有指定特定的版本,那么用要求的版本运行和开发项目(没有就装),但是不会设置为该语言的默认版本。其他场景下仍然使用较新版本的环境
2. 对于不常用的语言且系统包管理器内的能满足需求,不单独自己安装额外的管理工具,直接用系统源的包,系统源是啥就用啥(对我来说如 Java 、Rust 、C/C++)
简单概括就是,不一定会用新特性,但是版本会持续更新。基本始终用最新/次新大版本,一段时间更新一次。go/python 这种 major 版本不变的按 minor 来,node 这种 major 会更新的按 major 来(三位版本号通常叫做 major.minor.patch ,参考 https://semver.org/lang/zh-CN/)
同使用支持 win7 的版本 1.20.14
每天 pacman -Syu
就更新了, 有最新当然是最新的好…甚至线上服务器都是 Arch
不主动更新,直到需要某个特性,外部包依赖强制要求升级等
我现在用 1.23, 但是泛型都还没用上
一直保持最新,go 的版本兼容性还行,编译后扔到哪里都可以,而且 go 的三方包更新也很快,有部分会用到新版本特性,所以干脆一直保持最新版本
之前一直更新,后面停在 1.21 最后的小版本。1.22 之后理念不符。
我们公司是生产环境会用次新的偶数版本。
一直最新 scoop update *
破坏性更新怎么办?
生产环境用次新大版本,最新 1.23 那么线上就可以用 1.22
开发组员与线上版本同步,组长使用最新版本进行前瞻测试并制定规范,比如这次的 1.23 这个 range 就是我试过之后禁止组员使用的
go 1.x 都是向下兼容,至今没有破坏性更新, 所有无特殊需要 都是更新最新版,新版的一些优化,反而可以让之前的程序更高效些
go 1.23 也不支持 macOS 10.15 了
#16
1. major 之外不会有语言层面的破坏性更新,major 维护时间是一年,有半年的时间做迁移
2. major 的破坏性更新很少,在因为修复错误或者漏洞而不得不破坏时,也承诺提供机制来保持兼容性 https://go.dev/doc/go1compat https://go.dev/doc/godebug
3. 停止维护的版本会有已知漏洞,我觉得这个优先级更高
Go 会维护最近的两个或三个版本。如果没用上新特性,可以跟老版本的最近更新。比如发布了 1.23.0 ,就用 1.22.6 。以后 1.24 发布了,用 1.23.x 。
其实有的,只是不痛不痒的特性而已。比如 1.23 修改了 time.Timer 的 channel 特性
不知道哪个是最新版本。
永远最新。
rc 前一个版本
我一般落后 2 个月更新到最新 毕竟向下兼容做的还是可以基本问题不大
个人习惯 用上一个子版本的最新版 就是第二位版本号 -1 ,然后第三位最新版
只要没大的 bug 和你需要的功能更新,就没必要追。目前一直用的是 1.20.12 (注意小版本号是最高的那个),泛型还是有必要的,因为 lo 这个泛型库特别需要。
忘了啥时候,遇到过一个 bug, 只有新版本有,后来就不怎么跟着升级版本
很多时候是为了用某些包的新功能才升级版本😂
一样。 不过很多工具链都是自己管理版本, 都不可能用最新的。
我用.0 的上一个版本,直到下一个.0 发布再一次过升级到该.0 的上一个版本。
也就是一直保持用第二位的最后一个小版本
如这位同学所说
也就是更新到次新版本,比如现在是 1.23.0 ,1.22 里可能有 1.22.5, 1.22.6, 1.22.7, 那么就更新到 1.22.7
在Golang(Go语言)社区中,关于是否追新版本以及追大版本还是小版本的问题,实际上取决于多个因素,包括项目的稳定性需求、新特性的吸引力以及团队的技术债务管理能力。
一般来说,大版本更新(如Go 2.x)往往包含重大变更和新特性,这些变更可能需要对现有代码进行较大的调整。因此,对于生产环境中的稳定项目,追大版本需要谨慎,建议在充分测试并确认兼容后再进行升级。
相比之下,小版本更新(如Go 1.x.y)通常包含性能改进、bug修复和小范围的功能增强,这些更新对现有代码的兼容性影响较小。对于需要持续迭代和优化的项目,追小版本是一个相对安全且有效的选择。
然而,无论追大版本还是小版本,都建议遵循以下最佳实践:
- 备份代码:在升级前,确保有完整的代码备份,以便在出现问题时可以快速回滚。
- 阅读发布说明:详细了解新版本中的变更和新特性,评估其对项目的影响。
- 测试:在升级后,进行全面的测试,确保所有功能正常运行。
- 持续监控:升级后,持续监控系统的运行状态,及时发现并解决问题。
总之,追新版本是一个权衡利弊的过程,需要根据项目的实际情况和需求来做出决策。