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

\\

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

\\

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

\\

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

\\

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

\\

\value, err := DoSomething()\if err != nil {\  log.Println(err)\  return err\}\

\\

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

\\

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

\\

  • check function(...)表达式,在句法上缩短了错误处理,同时保证其简单易懂;\\t
  • handle语句,定义检查语句失败时应该执行的操作,而且可以更轻松地在单个位置添加准确的错误报告。\

check/handle的结合可以有效简化错误处理,如下所示:

\\

\func OldErrorHandlingExample() error {\\    hex, err := ioutil.ReadAll(os.Stdin)\    if err != nil {\        log.Fatal(err)\        return fmt.Errorf(\"copy %s %s: %v\

Go 2将添加错误处理和泛型相关推荐

  1. SSIS教程SQlServer2008R2 (5) 添加错误流重定向

    第 5 课:添加错误流重定向 SQL Server 2008 R2 为了处理在转换过程中可 能发生的错误,MicrosoftIntegration Services 使您能够基于每个组件和每个列来决定 ...

  2. url能访问但new file()找不到文件_Go Web编程给自己写的服务器添加错误和访问日志...

    错误日志和访问日志是一个服务器必须支持的功能,我们教程里使用的服务器到目前为止还没有这两个功能.正好前两天也写了篇介绍logrus日志库的文章,那么今天的文章里就给我们自己写的服务器加上错误日志和访问 ...

  3. Go Web编程--给自己写的服务器添加错误和访问日志

    错误日志和访问日志是一个服务器必须支持的功能,我们教程里使用的服务器到目前为止还没有这两个功能.正好前两天也写了篇介绍logrus日志库的文章,那么今天的文章里就给我们自己写的服务器加上错误日志和访问 ...

  4. struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别添加错误信息

    转自:https://www.cnblogs.com/wangyp/archive/2011/07/13/2104828.html 一.addActionError("错误内容") ...

  5. Oracle 批量添加 错误 SQL语句未结束

    Oracle 批量添加 其他语句回报 SQL语句未结束 的错误 <insert id="insertedTemp" parameterType="java.util ...

  6. 备忘之--apache下为站点添加错误页面

    环境: 操作系统:ubuntu 10.04    Apache版本:Apache/2.2.14 (Ubuntu) 打开文件 /etc/apache2/httpd.conf,添加 ErrorDocume ...

  7. Spring MVC笔记 添加错误页面

    使用Spring MVC的Web项目,可以使用DispatcherServlet来指定异常页面,下面是具体的配置: 在Spring配置文件中配置: 1 2 3 4 5 6 7 8 9 10 11 12 ...

  8. 添加错误debug信息

    http://hi.baidu.com/wei_1123/item/4218b2f704976cd66225d2d8 常常程式一長,哪邊就不小心多release了一次 這時候編譯器就只會告訴你:BAD ...

  9. 格式工厂转换视频找不到视频无法添加错误

    1.用 小白兔视频格式在线转换 2.上传你的视频. 3.转换好后,就可以看到视频已经是MP4格式了. 转载于:https://blog.51cto.com/14204019/2399965

最新文章

  1. 伦敦大学学院、UC伯克利联手,撰文综述深度强化学习泛化研究
  2. Python入门100题 | 第055题
  3. 01-JDBC学习手册:JDBC概述之JDBC发展、API、驱动
  4. TensorFlow 笔记5--模型复用
  5. python动态生成数据库表 orm_Python自动化 【第十二篇】:Python进阶-MySQL和ORM
  6. boost::basic_thread_pool相关的测试程序
  7. 小程序引入的echarts过大如何解决_解决微信小程序引用echarts视图模糊的问题
  8. 使用熔断器设计模式保护软件
  9. 7.24 校内模拟赛
  10. 遗传算法入门到掌握(二)
  11. 螺旋进刀非法平面选择_进刀方法、刀片类型、术语...螺纹加工重点知识你都知道吗?...
  12. win10在哪里找到计算机,win10计算器在哪里?win10怎么调出计算器?
  13. unity编辑器莫名崩溃
  14. 微软sccm服务器,微软SCCM是什么?
  15. html上图片用js绘制点,用 js + html 描图 与画箭头
  16. VB中ByVal与ByRef有什么区别
  17. java导出excel设置边框_Excel如何设置表格边框样式,记住这几个关键属性就懂了
  18. 打卡伦敦博物馆,在时空之旅中探索你未知的城市
  19. 硬盘Master和Slave是什么意思?
  20. 微信小程序 - 日历签到编写

热门文章

  1. 云计算机基地有辐射吗,服务器机房有辐射大吗
  2. SAP WM 显示TR ITEM的标准报表LX09
  3. SAP RETAIL WA03 基于分配表创建PO报错 - No work list could be selected –
  4. 依图颜水成:AI芯片设计要深度融合算法,才能实现极致性能
  5. 在微服务架构中做机器学习,真的太难了
  6. SAP SD 客户信贷管理解析
  7. 图像分区域合成,这个新方法实现了人脸的「精准整容」
  8. 计算机视觉的基本概念
  9. TensorFlow什么的都弱爆了,强者只用Numpy搭建神经网络
  10. 科普丨数据中心、云计算、大数据之间有什么区别和联系?