Go 1.15 的提案

栏目: IT技术 · 发布时间: 4年前

内容简介:已经临近 Go1.14 发布了,计划在 2 月份发布,RC1 候选版本已经准备好了。根据Go 的主要目标仍然是程序包和版本管理,更好的错误处理支持以及泛型。模块支持状况良好,并且每天都在不断完善,我们在泛型方面也正在取得进展(今年晚些时候会取得更多进展)。我们七个月前试图提供更好的错误处理机制的尝试鉴于模块和泛型正在积极开发中,并且由于错误处理暂时无法进行更改,我们还应该进行其他哪些更改(如果有)? 有一些常年性的收藏夹,例如对枚举和不可变类型的需求,但是这些思想还没有得到充分发展,它们也没有足够紧急以引起

状态

已经临近 Go 1.14 发布了,计划在 2 月份发布,RC1 候选版本已经准备好了。根据 Go 2, here we come! 这篇文章描述的过程,这到了我们开发和发布周期考虑的时候,我们是否希望在下一个版本中(Go1.15)增加语言和库的更改,并计划于今年 8 月份发布。

Go 的主要目标仍然是程序包和版本管理,更好的错误处理支持以及泛型。模块支持状况良好,并且每天都在不断完善,我们在泛型方面也正在取得进展(今年晚些时候会取得更多进展)。我们七个月前试图提供更好的错误处理机制的尝试 try proposal 得到了良好的支持,但也遭到了强烈反对,因此我们决定放弃它。在此之后,提出了许多后续建议,但它们似乎都没有足够的说服力,明显优于 try 建议,或者不太可能引起类似的争议。 因此,我们暂时没有进一步追求错误处理的变化。 也许将来的一些见识将有助于我们改善现状。

提案

鉴于模块和泛型正在积极开发中,并且由于错误处理暂时无法进行更改,我们还应该进行其他哪些更改(如果有)? 有一些常年性的收藏夹,例如对枚举和不可变类型的需求,但是这些思想还没有得到充分发展,它们也没有足够紧急以引起 Go 团队的关注,尤其是在考虑到语言改变的成本时。

在审查了所有可能可行的提案之后,更重要的是,由于我们不想在没有长期计划的情况下逐步增加新功能,因此得出结论,这次最好不进行重大更改。 取而代之的是,我们专注于几个新的 “vet” 检查以及对语言的较小调整。 我们选择了以下 3 个建议:

#32479 Diagnose string(int) conversion in go vet

我们计划在即将发布的 Go 1.14 版本中做到这一点,然而我们并没有解决这个问题,因此再次出现。为方便起见, string(int) 转换是在 Go 的早期引入的,但是它使新手感到困惑( string(10)\n 而不是 10 ),现在已经不合理了。转换可以在 unicode/utf8 包中进行。 由于 删除此转换 不是向后兼容的更改,因此我们建议改从 vet 错误开始。

#4483 Diagnose impossible interface-interface type assertions in go vet

当前,Go 允许接口类型的 xT 进行类型断言 x.(T) (以及相应的 type swtich case)。 但是,如果 xT 具有相同名称但签名不同的方法,则分配给 x 的任何值也不能实现 T 。 这样的类型断言将始终在运行时失败( panic 或返回 false )。 由于我们在编译时就知道这一点,因此编译器也可能会报告错误。 在这种情况下,报告编译器错误不是向后兼容的更改,因此,我们还建议从 vet 错误开始。

#28591 Constant-evaluate index and slice expressions with constant strings and indices

当前,用一个或多个常量索引对一个常量字符串进行索引或切片会分别产生一个非恒定的 字节字符串 值。但是,如果所有操作数都是常量,则编译器可以对这些表达式进行常量求值,并产生常量(可能是无类型的)结果。 这是完全向后兼容的更改,我们建议对规范和编译器进行必要的调整。

时间规划

我们认为,这三个提案中没有一个会引起争议,但是我们总是有可能错过一些重要的东西。 因此,我们计划在 Go 1.15 发行周期的开始(在Go 1.14发行时或之后)实施提案,以便有足够的时间收集经验并提供反馈。 根据 提案评估流程 ,最终决定将在2020 年 5 月初的开发周期结束时做出。

还有一件事情。。。

我们收到了更多的语言更改建议( 标记为 LanguageChange 的 issue ),我们无法对其进行彻底审查。例如,仅就错误处理而言,就有 57 个 issue,其中五个 issue 目前仍未解决。由于进行语言更改的成本,无论大小如何,都很高,而且收益往往不清楚,因此我们必须谨慎行事。因此,大多数语言更改建议迟早都会遭到拒绝,有时反馈很少。这可能对相关人来说不满意。如果你花费大量时间和精力详细概述了你的想法,立即拒接它肯定是不好的。在另一方面,由于一般的 提案流程 刻意保持简单,因此创建仅很少量的语言更改提案非常容易进行,这导致审查委员会进行了大量工作。为了改善每个人的体验,我们添加了一个新的 questionnaire :填写该模板将有助于审阅者对提案进行更有效的评估,因为他们不需要自己尝试回答这些问题。希望它能从一开始就设定期望,从而为提议者提供更好的指导。这是一个实验,我们会根据需要随着时间的推移进行完善。

谢谢您帮助改善 Go 的体验!

Robert Griesemer, for the Go team

28 January 2020

https://blog.golang.org/go1.15-proposals

欢迎关注我的公众号:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从算法到程序

从算法到程序

徐子珊 / 2013-3 / 59.00元

《从算法到程序:从应用问题编程实践全面体验算法理论》第1章讨论算法设计、分析的基本概念,第2章讨论算法设计中最常用的几个数据结构,包括链表、栈、队列、二叉搜索数、散列表等。第3章讨论了算法设计的两个基本策略:渐增策略与分支策略。这3章的内容,为读者阅读本书以后的内容奠定了基础。第4章讨论了几个代数计算的基本问题及其算法,包括矩阵运算、解线性方程组、多项式运算等。第5章讨论了几个关于计算几何的基本问......一起来看看 《从算法到程序》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具