当前位置:首页 > 科技  > 软件

一篇聊聊Go错误封装机制

来源: 责编: 时间:2023-08-05 11:44:57 4942观看
导读%w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使用 %w 时,它会在格式化字符串中占据一个位置

%w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。wLw28资讯网——每日最新资讯28at.com

使用 %w 时,它会在格式化字符串中占据一个位置,并将其后的错误作为参数传递给 fmt.Errorf 或 fmt.Sprintf 函数。这将创建一个新的错误,包含了原始错误信息,并形成一个错误链。wLw28资讯网——每日最新资讯28at.com

下面是一个示例,展示了如何使用 %w 来进行错误包装:wLw28资讯网——每日最新资讯28at.com

package mainimport (	"errors"	"fmt")func doSomething() error {	return errors.New("something went wrong")}func main() {	err := doSomething()	// Wrap the original error with additional context	wrappedErr := fmt.Errorf("encountered an issue: %w", err)	fmt.Println(wrappedErr) // Output: encountered an issue: something went wrong	if err, ok := wrappedErr.(interface{ Unwrap() error }); ok {		// wrappedErr是error类型,只支持Error()方法,所以没办法直接调用Unwrap()。但是wrappedErr.(interface{ Unwrap() error })取出内部的数据就可以调用Unwrap()了		fmt.Println("internal error:", err.Unwrap())	}	fmt.Println(errors.Is(wrappedErr, err))                         // Output: true	fmt.Println(errors.Is(err, fmt.Errorf("something went wrong"))) // Output: false}

另外,还有一种interface{ Unwrap() []error },其实是多次用了%w的结果。wLw28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-96-0.html一篇聊聊Go错误封装机制

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 如何正确使用:Has和:Nth-Last-Child

下一篇: Java NIO内存映射文件:提高文件读写效率的优秀实践!

标签:
  • 热门焦点
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    前言在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。注解
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现“美团直播”的固定入口。在直播聚合页面,外卖“神枪手”直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 引领旗舰级影像能力向中端机普及 OPPO K11 系列发布 1799 元起

    7月25日,OPPO正式发布K系列新品—— OPPO K11 。此次 K11 在中端手机市场长期被忽视的影像板块发力,突破性地搭载索尼 IMX890 旗舰大底主摄,支持 OIS
Top