接口指针和结构体实例指针的赋值问题

Aruforce · · 1642 次点击
这里粘贴代码怎么老出错?必须手动打么? ``` 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