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接口的结构吗?
`var _ Message = (*MyMessage)(nil)` 这一句用于校验MyMessage 是否实现了 Message 接口,如果没实现,编译会报错的。
#1
更多评论
多谢,再问一下,这种形式能实现Message接口吗?另外还有MyMessage能够继承BaseMessage的Say方法吗? BaseMessage和MyMessage符合Message接口的结构吗?望不吝赐教
#2
通过嵌入的方式,比如:type MyMessage struct { *BaseMessage} 这样可以达到继承的效果。
符合接口,更准确说是 *BaseMessage 和 *MyMessage 符合 Message 接口。
建议看看官方文档。http://docs.studygolang.com, 官方中文文档:http://docscn.studygolang.com
#3