文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go 1.20 中如何计算连接错误?

2024-02-11 19:56

关注

php小编苹果为大家带来了关于Go 1.20版本中如何计算连接错误的介绍。在新版本中,Go语言提供了一种更精确的连接错误计算方法,可以更好地监控和处理网络连接的异常情况。通过对连接错误的准确计算,开发者能够更快地定位和解决网络连接的问题,提高程序的稳定性和性能。本文将详细介绍Go 1.20版本中连接错误计算的原理和使用方法,帮助开发者更好地应对网络连接异常。

问题内容

据我了解, errors.Join() 是多错误集合类型的开箱即用替代品,例如 hashcorp/multierror ,它收集并行发生的错误。这个问题不解决常规错误包装/展开。

当我替换生产代码时,一些测试在尝试计算连接错误时失败。错误的数量和类型对于管理业务案例都很重要。这适用于 hashcorp/multierror,因为会生成某个字符串,例如 3 错误发生

package main

import "errors"

func doSomething() error {
    var multierror error
    err1 := errors.New("Hello")
    multierror = errors.Join(err1, err1)
    err2 := errors.New("World")
    multierror = errors.Join(err2, err1)

    return multierror
}

// somewhere else
func test_doSomething(t *testing.T) {
   actual := doSomething()
   assert.Len(t, 2, len(actual)????) // help
}

使用 errors.Join() 后如何统计错误数量?

我找不到一种方法来检查连接错误内的错误切片的性质,并且检查所述错误切片本身是不可能的,因为它是私有的。

使用 errors.Unwrap(err) 可能是一种方法,尽管我得到的只是一个错误或 nil (如果它是最后一个)。除了 errors.As/.Is 之外,它并不完全让我们解决计数错误。

解决方法

errors.Join() 记录:

因此 errors.Join() 返回的 error 将有一个 Unwrap() []error 方法。 类型断言 持有该方法的接口类型,您可以调用它,它将返回连接的切片错误:

例如:

err1 := errors.New("err1")
err2 := errors.New("err2")
err := errors.Join(err1, err2)

if uw, ok := err.(interface{ Unwrap() []error }); ok {
    errs := uw.Unwrap()
    fmt.Println("Number of joined errors:", len(errs))
}

这将输出(在 Go Playground 上尝试):

Number of joined errors: 2

以上就是Go 1.20 中如何计算连接错误?的详细内容,更多请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯