醒醒吧,未来不会有 Go2 了!

大家好,我是煎鱼。

马上春节了,节前最后一更。提前预祝大家春节快乐!

本周末在学习的时候,看到 Go 团队大当家 Russ Cox(下称:rsc)在近期分享的《GopherCon 2022: Russ Cox - Compatibility: How Go Programs Keep Working》,讲的是 Go 在兼容性方面的现有问题和思考,还埋了个新预期。

如下图:

他提出了一个新的 Slogan:“Go is boring, and that's good.(Go 很无聊,这很好)”,原因在于 Go 无聊是好的,因为无聊代表稳定的。无聊意味着你能够专注于你的工作,而不是我们的工作。

核心来讲,Go 团队希望 Go 足够简洁,Gopher 不要整天卷 Go 的各种奇思妙计,要把精力都关注到自己的工作上,不要关注他们。

我一开始听起来多少有点道理和自己的想法,听着听着这个车就刹不住了。

在最后的最后,rsc 冷不丁的正式官宣:不会有 Go2 了,会一直保持 Go1,将会加倍投入对 Go1 兼容性的建设,这将非常有价值

如下图:

当然,他也讲了,狭义里的 Go2 可能已经发生了,只是慢慢转为了 Go1 的新特性融入到了 Go 之中。

最重要的,那些没法兼容的 “新” 东西怎么办?大方向的大招已经在前文《加大力度!Go 将会增强 Go1 向后兼容性》有介绍过。

核心之一:使用 Go 工程中的 go.mod 文件内的 go 版本号来控制编译的选择,决定各个库在不同 Go 版本下以不同的表现来应用其特性,将会影响编译时的决定。

如下图:

  • 主模块(main module):声明 go 版本是 1.19,他可以使用泛型和带下划线的数字。
  • 模块 A v1.0.0:声明 go 版本是 1.17,模块 A 里的包不可以使用泛型(1.18 才开始支持),带下划线的数字可以正常使用。
  • 模块 B v1.2.1:声明 go 版本是 1.12,两者都不能用。

在上述说明中,主模块、模块 A、模块 B,分别根据 go.mod 内的 go 版本号,应用到了不同的可用特性(有的可以用泛型,有的不可以用带下划线的数字,有的都不能用等)。

这本质是结合 Go modules 原本的依赖管理逻辑,再复用 go.mod 的 go 版本号给不同版本的不同特性来做好编译的控制逻辑。

未来将不会有 Go2,都会是 Go1.x。

已经找到能往里各种塞的姿势了。

文章持续更新,可以微信搜【脑子进煎鱼了】阅读,本文 GitHub github.com/eddycjy/blog 已收录,学习 Go 语言可以看 Go 学习地图和路线,欢迎 Star 催更。

Go 图书系列

推荐阅读


煎鱼的清汤锅
今天写代码了吗 :-) 博客地址:[链接]
8.2k 声望
12.7k 粉丝
0 条评论
推荐阅读
Go 错误处理:100+ 提案全部被拒绝,为何现阶段仍用 if err != nil?
在 2018 年 8 月,现任 Go 核心团队负责人 Russ Cox 给 Go2 的错误处理画了一个大大的蓝图,并介绍了一个未实现的设计草案。

煎鱼阅读 242

Spring事务传播行为详解
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可...

JerryTse242阅读 122.7k评论 97

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木75阅读 7.1k评论 16

从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木45阅读 8.5k评论 6

从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...

乌柏木35阅读 6.7k评论 10

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go33阅读 2.5k评论 1

封面图
从零搭建 Node.js 企业级 Web 服务器(五):数据库访问
回顾 从零搭建 Node.js 企业级 Web 服务器(一):接口与分层,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,控制层与服务层实现了业务处理过程,模型层定义了业务实体并以 对象-关系...

乌柏木34阅读 5k评论 9

8.2k 声望
12.7k 粉丝
宣传栏