go语言没有类,只有结构体。以及还有接口,如何利用结构体和接口来实现类似与java的继承和实现呢?
我试着整理一下。
实现思路
实现发送的方法。定义一个发送的对象(info)-发送时需要的属性参数,定义发送接口(send)。如果我们需要邮件发送,定义邮件对象(email),实现发送接口.
1.定义结构体
a)定义一个信息结构体-info
//Info 信息
type Info struct {
name string
}
b)定义一个邮件信息/短信信息,包含(继承)信息结构体
//InfoEmail 邮件信息
type InfoEmail struct {
Info
address string // 邮件独有属性
}
//InfoSMS 短信
type InfoSMS struct {
Info
content string // 短信独有属性
}
2.定义发送接口-ISend
a)定义一个接口声明方法
//ISend 发送接口
type ISend interface {
send()
}
b)邮件/短信分别实现
// 短信发送实现
func (infoSMS *InfoSMS) send() {
fmt.Println(math.Exp(10), "i am infoSMS send")
}
// 邮件发送实现
func (infoEmail *InfoEmail) send() {
fmt.Println("i am infoEmail send")
}
3、使用
a)主程序调用
func main() {
var Mysend ISend
Mysend = new(InfoEmail)
Mysend.send()
Mysend = new(InfoSMS)
Mysend.send()
}
b)结果
结论
总体上是实现了继承和实现的面向对象的思路。如果应用到生产中的话,还是应该用工厂的模式来实现,go语言还没深入研究,各位看官还请指点一二。如果觉得还可以,请支持一下,谢谢!