你正在使用的Go版本是什么( go version
)?
$ go version
go1.15.6
这个问题在最新版本的发布中是否重现?
是的。
你正在使用什么操作系统和处理器架构( go env
)?
无
你做了什么?
这段代码:
type FooError interface {
Something() int
Error() string
}
err := someCall();
err.(*FooError)
报错:
impossible type assertion:
*FooError does not implement error (missing Error method)
问题在于你需要写 err.(FooError)
。
你期望看到什么?
如果它能指出 FooError
实现错误,那将更有帮助,所以问题出在添加的指针间接引用上。这个错误很可能是因为通常具体结构体类型通过指针引用实现错误,所以如果你从具体结构体错误更改为接口类型,你很可能会错过其中的 *
。
你看到了什么?
上面显示的错误信息。
2条答案
按热度按时间epggiuax1#
https://golang.org/cl/285372提到了这个问题:
cmd/compile: Revise error msg in type assertion ptr/non-ptr condition
ndh0cuux2#
我已经打开了一个PR来修改错误信息。请看一下。非常感谢。