```
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?
需要实现这样的操作,该怎么弄?
------
这里粘贴代码怎么老出错?必须手动打么?
```
package errors
type CustomError struct {
Msg string;
}
func(customError *CustomError)Error() string{
return customError.Msg;
}
```
```
package main
func main() {
var err *error = &errors.CustomError{"123456"};
fmt.Println(err.Error());
}
```
1.我省掉 package 这些了;
2.err *error 是不是指 err 可以接受*error的指针?var err *error 编译链接通过,代表可以有*error;
3.errors.CustomError 是error子类或者实现了error的全部接口,那么&errors.CustomError 得到的指针 难道不是 *error的类型?
4.err 不能存储 &errors.CustomError ?这合理么?
#4
更多评论
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