我有一段类似下面的代码:
if timeoutErr, ok := err.(net.Error); ok && timeoutErr.Timeout() {
// Some code that need to test
}
如何生成一个可以与此处的条件匹配的错误,这样代码才能通过if。
答案 0 :(得分:1)
Error
是一个接口:
type Error interface {
error
Timeout() bool // Is the error a timeout?
Temporary() bool // Is the error temporary?
}
要实现它,您需要做(未测试)之类的事情:
type MyError struct {
error
}
func (e MyError) Timeout() bool {
return true
}
func (e MyError) Temporary() bool {
return true
}
func (e MyError) Error() string {
return ""
}
请注意,您也必须实现Error()
,因为Error
嵌入了error
。