Go 1.20 将支持 wrapping multiple errors
Go 近日接受了名为「add support for wrapping multiple errors」的提案。
该项提案对错误处理进行了优化,与 Go 1.13 为错误处理提供的新功能有关:Error Wrapping。引入 Error Wrapping 后,Go 同时为errors
包添加了 3 个工具函数,分别是Unwrap
、Is
和As
。
对于「add support for wrapping multiple errors」提案,顾名思义就是一个错误可以包裹多个错误。
Unwrap() []error
提出该提案的开发者表示,重用Unwrap
避免了与现有 Unwrap 方法产生歧义,从Unwrap
中返回一个长度为 0 的列表意味着错误没有包裹任何内容。调用方不得修改由Unwrap
返回的列表,Unwrap
返回的列表不得包含任何nil
错误。
他还对errors.Is
和errors.As
函数进行了更新,实现对 multiple errors 进行Unwrap
操作。
errors.Join
函数提供了 multierr 的简单实现:
// Join returns an error that wraps the given errors. // Any nil error values are discarded. // The error formats as the text of the given errors, separated by newlines. // Join returns nil if errs contains no non-nil values. func Join(errs ...error) error
目前该提案已被接受,作者表示将在 Go 1.20 中提供:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
KDE KWin 将内置窗口分屏布局功能
Nate Graham 是 KDE 的主要开发者之一,前段时间他也入选了 KDE e.V. 董事会。跟以往一样,近日他又分享了一些与 KDE 相关的功能开发进度,让大家能够提前了解到 KDE 近期的开发任务,以及未来的路线规划。 而本次公开的 KDE 开发工作中,有一个功能特别值得关注 —— 那就是已完成 KWin 内置高级窗口分屏布局的初步工作,未来将允许用户创建自定义平铺布局。 KWin 是一个 X Window System 的窗口管理器和一个 Wayland 合成器。它作为 KDE Plasma 5 的一部分发布,它是该系统的默认窗口管理器。KWin 也可以单独使用或与其他桌面环境一起使用。 KWin 可由基于 ECMAScript 的脚本(如 QML、QtScript)来进行配置,能够让用户完全控制窗口,通过调整窗口的偏好设置,可以给用户带来更好的使用体验。其中包括的功能就有: 支持以特定的大小和位置启动应用程序 自定义标题栏按钮的位置 有多个显示器/桌面的情况下,支持在不同的桌面直接打开特定应用程序 可根据屏幕大小调整窗口装饰和字体等 …… 从上图也能看出,目前 KWin ...
- 下一篇
物联网通讯协议 iot-modbus V3.2.6 发布
物联网通讯协议 iot-modbus V3.2.6 发布 更新内容 iot-modbus本次发布的V3.2.6版本支持设备上线、掉线、处理业务异常监听处理,请看下面的源码解读。 设备上线监听源码解读 主要是在MiiListenerHandler重写了channelActive方法 @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){ String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length()); ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceCon...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池