golang实现接口类和多态的一种做法

package main

import "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 (message *SubMessage) Print() {
	fmt.Println("subMessage:msg", message.msg)
}

func interface_use(i IMessage) {
	i.Print()
}

func main() {
	//var message IMessage
	//if message == nil {
	//	fmt.Println("IMessage is nil")
	//}
	baseMessage := new(BaseMessage)
	baseMessage.msg = "a"
	interface_use(baseMessage)

	SubMessage := new(SubMessage)
	SubMessage.msg = "b"
	interface_use(SubMessage)
}


本文来自:开源中国博客

感谢作者:miros

查看原文:golang实现接口类和多态的一种做法

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。