时间:2022-8-4来源:本站原创作者:佚名
治疗白癜风的知名专家 http://m.39.net/pf/a_4386566.html

大家好,我是煎鱼。

前段时间我有一个朋友在某站点上摸鱼时,给我甩来一个主题为《golang设计者是如何偿还技术债的》链接。

说是让我学习、围观一下社区观点,早日好修成正果,本鱼表示满脸问号。

原回答如下图:

主要是以极短的话语表述Go语言的“泛型、异常、channel、annotation、模块依赖”的设计是失误的。

说是没有向各种编程语言的“最佳实践”各取所需。

那些故事

刚好煎鱼也入门Go没几天,偶尔翻过issues和proposal,看了一点点历史事件。

图来自IntroductiontoGolang

也从我的观点来围观一下Go官方这些年为特性挣扎过的那些事。

涉及:

泛型。错误处理。依赖管理。注解。泛型

为什么Go语言这么久都没有泛型,是不是Go官方不够“聪明”,抄作业都不会抄。这显然是不对的。

有如下几点原因:

泛型本质上并不是绝对的必需品。泛型不是Go语言的早期目标。其他feature更重要,把精力放在这些上面,Go团队人力很有限的。历史尝试

在以往的尝试中,Go团队有人进行过不少的泛型proposal试验。基本时间线(via

changkun)如下:

简述时间作者TypeFunctions年IanLanceTaylorGeneralizedTypes年IanLanceTaylorGeneralizedTypesv年IanLanceTaylorTypeParameters年IanLanceTaylorgo:generate年RobPikeFirstClassTypes年BryanC.MillsContracts年IanLanceTaylor,RobertGriesemerContracts年IanLanceTaylor,RobertGriesemerRedundancyinContracts()sDesign年IanLanceTaylor,RobertGriesemerConstrainedTypeParameters(,v1)年IanLanceTaylor,RobertGriesemerConstrainedTypeParameters(,v2)年IanLanceTaylor,RobertGriesemerConstrainedTypeParameters(,v3)年IanLanceTaylor,RobertGriesemer

我们观察一下,10年过去了,IanLanceTaylor依然在开展泛型提案,持续地在思考着Go泛型。

坚持思考,这一点值得我们学习。

对Go泛型历史有兴趣的读者可以看看《为什么Go的泛型一拖再拖?》,给了明确完整的内容介绍和过程描述了。

下一步计划

在年尾巴的我们,明年(年)Go1.18左右就可以见到Go泛型,基本跑不了。

想想就激动,如下图(此刻是4个月后):

图来自网上

在出来前可以看看《Go1.17支持泛型了?具体怎么用》,可以作为玩具用了。

接下来可以预见泛型出来后,一堆工具库和数据结构很大可能会被逐步改写,像是《Go提案:增加泛型版slices和maps新包》,早已摩拳擦掌。

届时Go源码类别的书的部分内容也会失时效,需要
转载请注明原文网址:http://www.coolofsoul.com/phpfz/phpfz/24326.html

------分隔线----------------------------