golang-利用Embedding和interface实现多态
go没有继承,但有个Embedding,这个东西有点类似于组合,写了个小例子,实现多态的效果
?
?
?
package mainimport "fmt"type IMessage interface{Print()}type BaseMessage struct{msg string}func (message *BaseMessage) Print(){fmt.Println("baseMessage:msg",message.msg)}type SubMessage struct{BaseMessage}func main() {var message IMessagebaseMessage := new(BaseMessage)baseMessage.msg = "a"message = baseMessagemessage.Print()SubMessage := new(SubMessage)SubMessage.msg = "b"message = SubMessagemessage.Print()}?
输出:
baseMessage:msg a
baseMessage:msg b
?
?