type Message interface {
Say()
Do()
}
type BaseMessage byte
func (this *BaseMessage) Say() {
fmt.Println("say something ...")
}
type MyMessage struct {
content string
}
func (this *MyMmessage) Do() {
fmt.Println("do something ....")
}
var _ Message = (*MyMessage)(nil) //这句没有理解
//还有MyMessage能够继承BaseMessage的Say方法吗?
//BaseMessage和MyMessage符合Message接口的结构吗?
我来给你解释一下:
1) var _ Message = (*MyMessage)(nil)
这句话的意思是:声明一个Message类型的变量_, 因为是interface类型,初始值nil强制类型转换。
2) 不过,你的代码,没有任何一个type完整实现 Message接口,也只能用nil 来初始化了
#5
更多评论
`var _ Message = (*MyMessage)(nil)` 这一句用于校验MyMessage 是否实现了 Message 接口,如果没实现,编译会报错的。
#1
多谢,再问一下,这种形式能实现Message接口吗?另外还有MyMessage能够继承BaseMessage的Say方法吗? BaseMessage和MyMessage符合Message接口的结构吗?望不吝赐教
#2