文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Error 类型
error 类型是一个接口类型,这是它的定义:
type error interface {
Error() string
}
error 是一个内置的接口类型,可以在 /builtin/
包下面找到相应的定义。而在很多内部包里面用到的 error
是 errors
包下面的实现的私有结构 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-nil
的 error
对象,将此对象与 nil
比较,结果为 true
,所以 fmt.Println
(fmt 包在处理 error 时会调用 Error 方法) 被调用,以输出错误,请看下面调用的示例代码:
f, err := Sqrt(-1)
if err != nil {
fmt.Println(err)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论