首页 > 后端开发 > Golang > 正文

为什么我仅在测试中收到“errors.As should not be *error”构建错误的第二个参数?

WBOY
发布: 2024-02-08 22:06:20
转载
813人浏览过

为什么我仅在测试中收到“errors.as should not be *error”构建错误的第二个参数?

php小编子墨,你好!关于你提到的构建错误中的问题,出现“errors.As should not be error”错误的原因可能有几种。首先,这个错误通常表示在构建时使用了错误的第二个参数。你需要确保第二个参数是正确的,并且与所需的类型相匹配。其次,可能是你在测试中使用了错误的数据。请仔细检查测试数据,并确保它们符合预期的格式和要求。最后,这个错误也可能是由于框架或库的问题引起的。在这种情况下,建议查阅相关文档或寻求社区的帮助,以找到解决方案。希望这些提示能对你有所帮助!

问题内容

考虑以下测试:

import (
    "errors"
    "fmt"
    "testing"
)

func testerror(t *testing.t) {
    err := &myerror{}
    var target error
    fmt.println(errors.as(err, &target))
}

type myerror struct{}

func (err *myerror) error() string {
    return "oops!"
}
登录后复制

运行此测试会将构建错误 second 参数返回到错误。不应为 *error

去游乐场

但是,当在 main 中运行完全相同的代码时,程序运行没有问题:

package main

import (
    "errors"
    "fmt"
)

func main() {
    err := &myerror{}
    var target error
    fmt.println(errors.as(err, &target))
}

type myerror struct{}

func (err *myerror) error() string {
    return "oops!"
}
登录后复制

去游乐场

我在 go playground 和我的本地开发环境中看到了这种行为,这两个环境都使用 go 1.20。

Picsart AI Image Generator
Picsart AI Image Generator

Picsart推出的AI图片生成器

Picsart AI Image Generator 37
查看详情 Picsart AI Image Generator

这是 go 中的错误吗?

编辑

我可以通过创建 error 类型来解决测试中的构建失败问题:

package main

import (
    "errors"
    "fmt"
    "testing"
)

type Error error // <===== Add error type

func TestError(t *testing.T) {
    err := &MyError{}
    var target Error // <===== Use Error type
    fmt.Println(errors.As(err, &target))
}

type MyError struct{}

func (err *MyError) Error() string {
    return "oops!"
}
登录后复制

解决方法

该错误是由 go vet 命令报告的。 go test 命令自动运行 go vet 以报告重大问题。 go build 命令不运行 go vet 命令。

该警告不是 Go 中的错误。

使用 *error 作为第二个参数调用 errors.As 是没有意义的,因为您已经知道第一个参数满足 error 接口。几乎可以肯定你做错了什么。

以上就是为什么我仅在测试中收到“errors.As should not be *error”构建错误的第二个参数?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号