Может кто-нибудь объяснить этот код для меня?
Когда это вызывается, err != nil
возвращает true, что приводит к ссылке на указатель нулевого значения.nil тест на интерфейсе не работает
type E struct{}
func (e E) Error() string {
return ""
}
func DoStuff() *E {
return nil
}
func main() {
var err *E
err = DoStuff()
log.Println(err) // nil
testErr(err)
}
func testErr(err error) {
if err != nil {
log.Println("got error", err.Error())
}
}
https://play.golang.org/p/iys7U_UMhG
я понял, что это что-то делать с тем, что я имею дело с нильпотоком STRUCT-указателем литого к интерфейсу ...
Однако я запутался как создать этот интерфейс DoStuff
, если кто-то хочет вернуть «умный» объект ошибки, а не просто error
.
Хотя это не катастрофа, это все еще эхо «получил ошибку» - даже если значение ошибки прошло фактически ноль? – cfstras