为什么我的自定义错误类型导致特定模式的错误?

时间:2018-12-18 09:53:52

标签: pointers go error-handling

我在为go的接收器和指针苦苦挣扎。 我发现第四个模式会导致错误。 为什么这种模式会导致错误,有什么区别? 预先感谢。

type MyError struct{}

// OK pattern
func (e MyError) Error() string {
    return "something bad happened"
}

func run() error {
    return MyError{}
}

// OK pattern
func (e MyError) Error() string {
    return "something bad happened"
}

func run() error {
    return &MyError{}
}

// OK pattern
func (e *MyError) Error() string {
    return "something bad happened"
}

func run() error {
    return &MyError{}
}

// BAD pattern
func (e *MyError) Error() string {
    return "something bad happened"
}

func run() error {
    return MyError{}
}

1 个答案:

答案 0 :(得分:0)

Go将自动为您取消引用一个指针(模式2),但是不会为您自动引用一个指针。有关更多信息,请参见https://golang.org/ref/spec#Method_values