博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go 2将添加错误处理和泛型
阅读量:6619 次
发布时间:2019-06-25

本文共 896 字,大约阅读时间需要 2 分钟。

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

\\

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

\\

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

\\

根据InfoQ之前的报道,,虽然尚处于试验阶段,经常会有修改。模块是共享同一个导入路径前缀的包的集合,提供了一种可以替代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\

转载地址:http://haupo.baihongyu.com/

你可能感兴趣的文章
第 8 章 Spring Data
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
查看>>
C语言 编程练习22题
查看>>
CloudDBA现场助力双十一
查看>>
虚拟现实技术或会产生副作用
查看>>
【云图】如何设置微信里的全国实体店地图?
查看>>
db file async I/O submit 等待事件优化
查看>>
李开复谈未来工作:虽然会被AI取代,但谁说人类非得工作不可?
查看>>
Intercom的持续部署实践:一天部署100次,1次10分钟
查看>>
SpringBoot权限控制
查看>>
阿里云中间件技术 促进互联网高速发展
查看>>
智能时代悄然到来 物联网称王将引爆传感器产业
查看>>
Java中HashMap的原理分析
查看>>
React Native入门项目与解析
查看>>
云计算:大势所趋 你准备好了么?
查看>>
数据资产的运营商--天市大数据交易平台
查看>>
中小企业如何成功转型跨境电商
查看>>
java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
查看>>
《ANTLR 4权威指南》——2.5 语法分析树监听器和访问器
查看>>
02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译...
查看>>