go `cmd/compile: 不实用的错误信息,如果类型Assert具有不匹配的指针/非指针类型`

dced5bon  于 3个月前  发布在  Go
关注(0)|答案(2)|浏览(41)

你正在使用的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 实现错误,那将更有帮助,所以问题出在添加的指针间接引用上。这个错误很可能是因为通常具体结构体类型通过指针引用实现错误,所以如果你从具体结构体错误更改为接口类型,你很可能会错过其中的 *

你看到了什么?

上面显示的错误信息。

epggiuax

epggiuax1#

https://golang.org/cl/285372提到了这个问题:cmd/compile: Revise error msg in type assertion ptr/non-ptr condition

ndh0cuux

ndh0cuux2#

我已经打开了一个PR来修改错误信息。请看一下。非常感谢。

相关问题