Go 如何将错误与依赖项注入匹配?

Go 如何将错误与依赖项注入匹配?,go,Go,使用依赖项注入时,错误匹配的最佳实践是什么 如果我们在函数中使用了这样的接口: type MyIF interface { Send(reciever, msg string) error } function mySender(s MyIF) { err := s.Send("me@myself.com", "hello") if err != nil { if err == ??? { } } } 错误如何匹配?与

使用依赖项注入时,错误匹配的最佳实践是什么

如果我们在函数中使用了这样的接口:

type MyIF interface {
  Send(reciever, msg string) error
}

function mySender(s MyIF) {

  err := s.Send("me@myself.com", "hello")
  if err != nil {
    if err == ??? {
    }
  }
}
错误如何匹配?与从包导入不同,我无法导入可用于与.Is()进行比较或检查的已定义错误变量。

由链接的解决方案对我有效(请参阅)。通过在博客文章的net包中添加一个错误接口,我可以做我想做的事情

谢谢

代码片段将如下所示:

type MyIF interface {
  Send(reciever, msg string) error
}

type MyError interface {
  Error() string
  ReceiverUnknown() bool
}

function mySender(s MyIF) {
  err := s.Send("me@myself.com", "hello")
  if err != nil {
    if nerr, ok := err.(MyError); ok && nerr.ReceiverUnknown() {
      // handle unknown Receiver
    }
  }
}

是什么阻止您使用声明的错误变量?您可以将其类型断言为具体类型吗?请参阅有关网络包错误的部分。我认为将其断言为另一个(错误)接口类型是一个选项。这会将错误类型添加到接口与另一个接口的约定中。