一、Error
Go 中实现了Error()方法的对象都是一种error。
type error interface {
Error() string
}
errors.New() 返回一个errorString对象的指针,errorString对象就实现了Error()方法。
type errorString struct {
s string
}
func (e *errorString) Error() string {
return e.s
}
func New(text string) error {
return &errorString{
text}
}
由于返回的是指针,所以即便使用一样的错误字符串,New出来的错误也是不同的。如下代码,只会输出“Named Type Error”
package main
import (
"errors"
"fmt"
)
type errorString string
func (e errorString) Error() string {
return string(e)
}
func newNamedErr(text string) error {
return errorString(text)
}
var errNamedType = newNamedErr("EOF")
var errStructType = errors.New("EOF")
func main() {
if errNamedType == newNamedErr("EOF")