Go
- 27 于2024年8月登陆, 虽然它没有引入打地变化, 如果你在维持生产服务或建立新的生产服务,这些更新可以节省你的时间和头痛。
让我们把噪音切开, 性能: 在不更改行的情况下更快 编译器和运行时间收到了好几次"下行"优化.
基准显示,在典型的服务器工作量中,速度为3%-5%,一些微分基准达到10%.
这不是魔力, 而是更好的内置决定和减少内存分配费的结果。
最好的部分吗?
这是免费的 重新编译您现有的代码 与Go 1.27 并测量差异。
一个突出的改进是垃圾收集。
GC现在更高效地处理大堆问题, GC周期的悬崖应该不那么明显, 语言曲折:小而有用 Go 1.27引入了几处语言变化来简化常见模式.
最值得注意的是增加了新的内置功能清晰.
它的工作是切片,地图,和类型参数, 让你重新设置收藏而不重新分配它们。
这对集合或再利用缓冲器特别方便。
对于切片,将所有元素设置为零值,将切片切到长度为零.
对于地图,它会去掉所有条目,使地图空出但容量相同.
对于类型参数,它的行为基于基础类型,对通用代码有用.
另一个小而受欢迎的变化是使用//去:用方法链接名的能力.
这之前仅限于功能,这使得某些低级优化变得尴尬.
现在可以直接链接方法,这对写出高度优化的库或与C代码的接口很有用.
工具:更好的调试和依赖管理 行动指挥在几个方面变得更加聪明。
首先,去mod整理,现在保存 // 间接的评论在您 go.mod 文件中 。
但当你们管理大团队的依赖关系时, 该工具还更好地检测和去除未使用的依赖关系,从而保持了您的建筑的收缩.
调试随着DWARF信息的改进而得到推动.
如果你曾试图在调试器中检查变量,你会注意到差异。
Go团队与Delve团队合作,确保常见的调试情景,如走入内线功能,更加可靠.
这在调试优化构建时特别有用.
标准库添加:填补空白 标准库现在包括了数学/兰德/v2,这个新包提供了更快,更安全的随机数生成.
旧的数学/随机包仍然用于后向兼容,但 v2 是您应该寻找新代码的地方 。
它使用一个更快的算法和默认的加密安全种子,这是比起旧行为的一个很好的改进.
另一个有用的补充是切片.
将多片切成一 这是一种小的生活质量改善, 但它是一种在日常代码中减少锅炉板的东西。
功能是可变的,因此可以通过需要的切片.
升级:What to Watch For Uption to Go 1.27是直截了当的,但有一些事情需要记住.
语言变化是向后兼容的,所以您现有的代码应该编译而无需发行.
但是,如果你使用/去:与方法相链接,你需要更新这些指令,以配合新的语法。
运行去测试. /...
升级后抓住任何出乎意料的行为。
检查您的CI管道, 校对:Soup 你应该升级吗?
如果你已经在1. 22号公路上.