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