代码之家  ›  专栏  ›  技术社区  ›  Shota Tamura

为什么我的自定义错误类型会导致特定模式的错误?[复制品]

  •  -1
  • Shota Tamura  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我在和围棋的接球手和投手搏斗。 我发现第四种模式会导致错误。 为什么这种模式会导致错误,有什么区别? 提前谢谢。

    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 回复  |  直到 7 年前
        1
  •  0
  •   poy    7 年前

    go将自动为您取消引用指针(模式2),但它不会自动为您引用指针。见 https://golang.org/ref/spec#Method_values 更多信息。