1 回答
TA贡献1836条经验 获得超4个赞
您使用该UniversalError()方法,但没有将其添加到接口“定义”中,因此请执行以下操作:
type UniversalError interface {
CommonError1
UniversalError()
}
而你想Error3成为一个UniversalError. 要Error3成为UniversalError,它必须实现其所有方法:UniversalError()和CommonError1()。所以你必须添加这两个方法:
func (Error3) CommonError1() {}
func (Error3) UniversalError() {}
通过这些更改,输出将是(在Go Playground上尝试):
**** Types *****
Error belongs to an unidentified type
Error belongs to an unidentified type
CommonError1 found, but Does not belong to Error1 or Error2
提示:如果您希望编译时保证某些具体类型实现某些接口,请使用空白变量声明,如下所示:
var _ UniversalError = Error3{}
上面的声明将 的值赋给Error3类型为 的变量UniversalError。不应该Error3满足UniversalError,您会收到编译时错误。上面的声明不会引入新变量,因为使用了空白标识符,这只是编译时检查。
如果您要删除该Error3.CommonError1()方法:
//func (Error3) CommonError1() {}
func (Error3) UniversalError() {}
然后你会立即得到一个编译时错误:
./prog.go:49:5: cannot use Error3 literal (type Error3) as type UniversalError in assignment:
Error3 does not implement UniversalError (missing CommonError1 method)
- 1 回答
- 0 关注
- 127 浏览
添加回答
举报