返回介绍

Error 类型

发布于 2024-10-12 12:35:57 字数 1336 浏览 0 评论 0 收藏 0

error 类型是一个接口类型,这是它的定义:

type error interface {
    Error() string
}

error 是一个内置的接口类型,可以在 /builtin/ 包下面找到相应的定义。而在很多内部包里面用到的 errorerrors 包下面的实现的私有结构 errorString

// errorString is a trivial implementation of error.
type errorString struct {
    s string
}

func (e *errorString) Error() string {
    return e.s
}

可以通过 errors.New 把一个字符串转化为 errorString ,以得到一个满足接口 error 的对象,其内部实现如下:

// New returns an error that formats as the given text.
func New(text string) error {
    return &errorString{text}
}

下面这个例子演示了如何使用 errors.New :

func Sqrt(f float64) (float64, error) {
    if f < 0 {
        return 0, errors.New("math: square root of negative number")
    }
    // implementation
}

在下面的例子中,在调用 Sqrt 的时候传递的一个负数,然后就得到了 non-nilerror 对象,将此对象与 nil 比较,结果为 true ,所以 fmt.Println (fmt 包在处理 error 时会调用 Error 方法) 被调用,以输出错误,请看下面调用的示例代码:

f, err := Sqrt(-1)
if err != nil {
    fmt.Println(err)
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文