我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:万喜彩票 > 泛型方法 >

Go 2 将添加错误处理和泛型

归档日期:04-23       文本归类:泛型方法      文章编辑:爱尚语录

  在Gophercon 2018大会上,Russ Cox 介绍了将添加到 Go 2 的特性,包括错误处理和泛型,并透露了当前一些新特性提案的内容。

  自去年在 Gophercon 2017 大会上宣布以后,Go 2 就旨在克服这门语言的不足,同时,保持“成为开发大型系统的高效语言”的总目标不变。所谓大型系统是指包含许多并发交互服务以及由许多松散协调的工程师开发的大型代码库。

  按照 Cox 的说法,在所有的 Go 开发者调查中,有三个领域的改进一直出现:包管理、错误处理和泛型。

  根据 InfoQ 之前的报道,Go 1.11 增加了模块,虽然尚处于试验阶段,经常会有修改。模块是共享同一个导入路径前缀的包的集合,提供了一种可以替代GOPATH定位项目依赖的方法。它们也是保证满足递归依赖关系的版本控制单位。

  Cox 表示,说到错误处理,Go 当前的不足就明确并可以理解了。一个问题是,Go 的错误处理方式强迫开发人员编写了太多样板代码,就像下面这个惯用模式所展示的那样:

  另外一个相关问题是,当把足够详细的信息传回调用者,包括文件名、行号等,Go 并不会显式创建一个错误处理模型。提供这类详细信息并不难,但增加了样板代码。

  为了修复所有这些问题,在 Go 2 中,当前的错误处理草案设计采用了一种新模式,基于:

  重要的是,要考虑handle代码块链的词法,它们会从最下面往上执行,直到包含return语句的第一个代码块。

  Go 社区对于泛型的概念并不陌生,C++、Java 等其他语言都包含这一概念。在一门语言中引入泛型的关键是,它允许如何定义参数类型以及它必须满足的约束,例如相等比较。据 Cox 介绍,把约束规范置于泛型规范之外,即从实现推断,会导致不良接口,在代码开发中特别容易遭到破坏。

  在 Go 2 中,当前的泛型草案设计使用contract定义参数类型必须支持而实现时可以使用的操作,例如:

  Go 2 当前的草案设计还仅仅是草案。现在,社区是时候参与进来了,帮助改进它们,使它们转化成官方提案。Go 1 的开发不会停止。实际上,根据最初的计划,Go 2 中向后兼容的特性将作为 Go 1 发布的一部分逐步发布,就像 Go 1.11 的模块支持那样,此后,该语言将开始包含任何破坏现有代码库兼容性的特性。

本文链接:http://apps-n-tabs.com/fanxingfangfa/6.html