治疗白癜风的知名专家 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源码类别的书的部分内容也会失时效,需要
|