转到自定义错误类型:为什么返回错误指针?

时间:2018-08-13 16:08:47

标签: go error-handling

自定义错误类型允许调用者使用类型断言检查错误的类别:

type MyError struct {
    Message string
}

func (e MyError) Error() string {
    return e.Message
}

func GenerateError() error {
    return MyError{"example text"}
}

func main() {
    err := GenerateError()
    _, ok := err.(MyError)
    fmt.Printf("%t\n", ok)
}

打印“ true”。

但是,在我看到的所有解释这种技术的示例中,人们都不是这样编写代码的。相反,它们将 pointers 传递给自定义错误类型:

type MyError struct {
    Message string
}

func (e *MyError) Error() string {
    return e.Message
}

func GenerateError() error {
    return &MyError{"example text"}
}

func main() {
    err := GenerateError()
    _, ok := err.(*MyError)
    fmt.Printf("%t\n", ok)
}

示例: gobyexample.comthis Medium article

额外的间接访问有什么好处吗?为什么只是更复杂呢?

0 个答案:

没有答案