```
type CustomError struct {
Msg string;
}
func(customError *CustomError)Error() string{
return customError.Msg;
}
func main() {
var err *errors.CustomError = &errors.CustomError{"123456"};
fmt.Println(err.Error());
}
```
这样为什么无法通过编译?
CustomError 实现了error的接口啊?
在写工具的过程中,处处都需要指针,结果结构体指针还不能赋值给接口指针?难道不能像Java 或者其他的语言?BaseClass Pointer = ExtendsClass Ponter?
需要实现这样的操作,该怎么弄?
------
go里面没有接口指针的说法,接口就是接口,可以接受任何实现了这个接口的类型的对象赋值
var err *errors.CustomError = &errors.CustomError{"123456"};
这个你是想写成这样吗:
var err error = &CustomError{"123456"};
#1
更多评论
怎么粘贴代码不太对啊
```
type CustomError struct {
Msg string;
}
func(customError *CustomError)Error() string{
return customError.Msg;
}
func main() {
var err *errors = &errors.CustomError{"123456"};
fmt.Println(err.Error());
}
```
这个样子 的代码,
&errors.CustomError{"123456"} 是一个CustomError指针,CustomError 实现了error的全部接口 ;err *error 是一个error类型的指针;
难道err 不能接受 &errors.CustomError{"123456"}这个么?我个人直觉 这应该是很正常的操作啊
#2
1. CustomError是你自定义的类型,不是package errors里面定义的类型,不能写成errors.CustomError
2. `*error 是一个error类型的指针;` error是个interface,不能取指针,也没必要
3. 不要把C++里面的语法直接套到go里面,go的好就在于他的独特,在于作者写了几十年的C/C++后觉得应该搞一个更好用的更贴近实际工作需要的语言,如果go只是其他语言的复制,就没必要发明他了
#3