迈向Go 2的下一步

开源中国 · · 5213 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go 2 又有进展了,近日 Go 团队在博客[公布](https://blog.golang.org/go2-next-steps)了关于 Go 2 下一步的计划。根据此前的报道,所谓的 Go 2 并非一个单独的重大更新版本,而是通过“增量(incremental)更新”的方式以逐渐抵达 "Go 2.0",所以期间的版本都能看到 Go 2 的影子。 ![img](https://static.studygolang.com/190627/d4916a2a55ab0a5c28cce3f4d038cd24.jpg) ### **当前状态** Go 团队表示正准备推出 Go 1.13,有望在今年 8 月初发布。经历长时间的开发后,这会是首个包括对语言特性进行具体更改的重要版本,而不仅仅是针对规范的小调整。 为了实现这些变化,Go 团队从一小系列可行的提案开始,这些提案很大一部分来自 GitHub 中被标记为提案的 [issue 列表](https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3AGo2+label%3AProposal)。[此文](https://studygolang.com/articles/21489)讲述过关于提案新的评估流程,团队希望所选择的提案对语言的改动较小,而且几乎没有争议,这样是为了保证经历完全程后,最终能实现这些提案。另外,提案引起的变更必须向后兼容,以实现最小的破坏性。 总而言之,初始阶段的变更不是为了解决重大问题,更多的是希望 Go 社区重新活跃起来,并从新的流程中汲取经验。 对于原始的提案列表 —— [通用 Unicode 标识符](https://golang.org/issues/20706)、[二进制整数字面量(binary integer literals)](https://github.com/golang/go/issues/19308)、[用于数字字面量的分隔符](https://github.com/golang/go/issues/28493)和 [signed integer shift counts](https://github.com/golang/go/issues/19113),官方表示已采纳部分并对它们进行了修改。如关于二进制字面量的提案,团队已对其进行了显著的扩展,并对 Go 的数字字面量语法进行全面和现代化的改进。 Go 团队还将错误处理(error inspection) 添加到了 Go 2 的草案设计提案中,该提案已被部分接受。 在 Go 1.13 中,我们将能看到这些变化,不过官方表示现在关注的重点是 Go 1.14,并确定接下来要解决的问题。 ### **关于 Go 1.14 的提案** Go 团队表示当前对 Go 语言的[目标](https://www.oschina.net/news/102290/go2-here-we-come)依旧和 2007 年的一致:成为一门使软件开发更具伸缩性的语言。在这条路上,改进 Go 伸缩性的三大难题包括:包/版本管理、错误处理以及泛型。 不过随着对 Go module 的支持日益强大,团队正在努力解决对包/版本管理支持的问题。所以现在主要剩下错误处理和泛型的问题亟需解决。 团队一直在研究和它们相关的问题,并在去年的 GopherCon 大会上提出了[设计草案](https://www.oschina.net/news/99490/go-2-draft-designs)。自那时起,团队就一直在迭代和改进这些设计。对于错误处理,他们发布了一个详细的、经过重大修改和简化的草案。对于泛型,团队表示已取得进展,今年还在 GopherCon 上进行了一场名为 “Generics in Go” 的演讲(Ian Lance Taylor 作为演讲者),不过尚未达到具体的提案阶段。 团队希望给 Go 语言带去一些小的改进,所以为 Go 1.14 选择了以下这些提案: - [#32437](https://github.com/golang/go/issues/32437) 添加内置的 Go 错误检查函数,"try" ([design doc](https://golang.org/design/32437-try-builtin)) - [#6977](https://github.com/golang/go/issues/6977) 允许嵌入重叠的接口(overlapping interfaces) ([design doc](https://golang.org/design/6977-overlapping-interfaces)) - [#32479](https://github.com/golang/go/issues/32479) 在`go vet`中对`string(int)`转换进行诊断 - [#32466](https://github.com/golang/go/issues/32466) 采用加密准则 ([design doc](https://golang.org/design/cryptography-principles)) ### **下一步** 团队正在积极征求对这些提案的反馈意见。他们希望看到用户在基于事实的情况下,解释为什么提案可能在实践中不能很好地运作,或者指出团队在设计中欠缺考虑的问题等。对于仅包含个人意见的评论,团队表示可以承认它们,但无法以任何建设性的方式来解决这些问题。 最后,如果没有充分的理由阻止这些提案进入试验阶段,团队将会在 Go 1.14 的开发周期(2019年8月初开始)中实现它们,以便在实践中对其进行评估。根据提案评估流程,Go 1.14 预计将在开发周期结束时(2019年11月初)完成。

有疑问加站长微信联系(非本文作者))

本文来自:微信公众平台

感谢作者:开源中国

查看原文:迈向Go 2的下一步

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5213 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传