官方启动Go 2草稿设计发想,要将Go推向大型专案
2018-08-31 17:24:15 | 来源:ithome | 投稿:小唯 | 编辑:dations

原标题:官方启动Go 2草稿设计发想,要将Go推向大型专案

Go官方已经开始着手Go△2的开发程序,并启动设计草稿发想,率先丢出了三个讨论提案,分别是错误处理(Error△Handling)、错误值语意(Error△Values)以及泛型(Generics),官方强调,这些提案还只是草稿设计,并非正式官方提案,欢迎Go使用者参与讨论改进。

这些草案设计并非Go提案流程意义上的正式提案,而是作为抛砖引玉,给社交一个讨论的起点,最终目标是产生够好的设计,以转化成实际的正式提案。官方提到,每个草案设计应该都要附有问题概述,来帮助社交理解设计背景,并且提供足够的设计细节,帮助建构和指引有关的讨论。官方列出的泛型、错误值语意以及错误处理三个设计草案作为示范,希望所有Go用户都能帮忙改进,并转成最终的提案。

Go团队提到,Go△2的整体目标是要解决Go无法扩展使用在大型程式码基底,与大型开发人员工作的问题,而他们在Go首次开源前,就一直讨论泛型的可能。在参考C++和Java的经验后,他们发现这主题需要一段时间理解,才能设计出良好的解决方案,在社交中有人错误认为,Go团队的立场永远不会有泛型,官方提到,相反的,因为他们理解虽然泛型会为Go带来更多灵活性,但同时也会让Go变得复杂许多。

现在Go团队提出设计草案,建议扩展Go语言,为类别和函数增加可选的类别参数。目标是要让开发者在撰写Go函式库的时候,这些函式库抽象不需要类别细节,特别是除了预期中的容器类别之外,Go团队也希望可以编写有用的函式库,来操作任意的map和channel值,最理想的状态是可撰写执行在 []byte和string上的多型函数。

同时设计草稿也提到,其他类别的参数化不在目标中,像是通过常量进行的参数化,另外,以位元包装定义通用向量 T△和特殊案例向量 bool△,这类实作多型定义的特化实现也并非目标。

致力于让Go迈向大型程式码应用,除了程式必须轻量、不过度重复并且强健外,在出现错误时还要能优雅地处理错误。Go团队希望Go的错误检查可以更加轻量化,减少专用于错误检查的Go程式文字,此外,也朝更方便撰写错误处理程式码的方向前进,进而提升开发者执行这项工作的意愿。而且错误检查和错误处理的工作都必须外显,也就是说在程式文字必须可见,Go团队认为,他们不想重蹈覆辙异常处理的陷阱。在进行错误处理改进工作,必须让现有的所有程式都适用。

Go团队在设计草案中,为此引入两种新的语法形式,首先使用检查表示式检查f(x, y, z)和错误,并标记出显性错误,其次加入定义错误处理程式的处理语句,当错误检查失败时,会将控制权转移到内层处理程式,该处理程式会将控制权再转移到下一个处理程式,以此类推直到处理程式执行return语句。

错误处理可以检查并且回应错误之外,良好的报告错误也是非常重要的工作。由于错误值是实作错误介面的任何值,Go程式会以4种方式测试特定错误。无论哪种方式,当原始错误是已知的标记或已知的错误实作类别,则无论是通过fmt.Errorf,抑或是WriteError这类新类别,都会破坏相等性检查并键入断言以查询原始错误。而这将阻止包装,使得有用的错误减少。

在复杂的程式中,最有用的错误叙述,必须包括导致错误的所有不同操作的讯息。而错误值语意设计草稿解决了两个问题,错误检阅和错误格式化,分别会由不同的草案解决,同样会在维持与现有程式码互通的情况下,允许套件继续定义自己的错误类别,以指向错误实作能够满足的定义可选介面方向。

Go团队希望所有使用者可以帮忙改进草案,使其可以转为正式的Go提案,官方建立了一个维基页面,以收集和组织每个主题的回馈。

tags:

上一篇  下一篇

相关:

【有片睇】Hello Kitty 亲自做 YouTuber?Sanrio 开设官方频道 | 香港 UNWIRE.HK 玩生活.乐科技

近年 Virtual YouTuber 热潮席卷网络视频界,不少虚拟角色被制成 YouTuber 主持节目,配音由电子合成声音发出。Sanrio 今日在 YouTube 上开设了名为 HELLO KITTY【Sanrio Official】官方频道,此频道将由 HELLO KITT

Google赞助CNCF共900万美元云端点数,助Kubernetes专案平顺转移至社交

云端原生计算基金会(Cloud△Native△Computing△Foundation,CNCF)预期2018年,将是Kubernetes技术从早期采用者阶段进到早期多数阶段的一年,Google为了支援Kubernetes的爆炸性成长,正式将Kubernetes的所有权和管

DepShield可自动化监控相关开源专案程式码漏洞

开源DevOps服务供应商Sonatype发表DepShield,这是一个针对GitHub的应用程序,能自动识别开源相依专案程式码中的漏洞,提醒开发人员需要修补的部分,提高企业对于开源治理的能力。Sonatype提到,根据他们针对DevSecO

GitHub开源自家负载平衡器GLB指引主机专案

GitHub对外开源了自家用于处理每秒数百万次请求负载平衡器GLB(GitHub△Load△Balancer)中的指引主机(Director)专案。由于原本的负载平衡器难以水平扩展,GitHub重新设计了GLB,而且为了拥有最好的效能,GLB在Git

AndroidX移至Android开源专案,让社交能参与开发

为新的Android平台API提供向后相容性,用来取代Android支援函式库的AndroidX,现在由于Google内部的工作已经完成,因此整个专案将被推送到Android开源专案(Android△Open△Source△Project,AOSP)。此外,Google也

站长推荐: