go语言中的继承和实现

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)结果


image.png
结论

总体上是实现了继承和实现的面向对象的思路。如果应用到生产中的话,还是应该用工厂的模式来实现,go语言还没深入研究,各位看官还请指点一二。如果觉得还可以,请支持一下,谢谢!

你可能感兴趣的:(go语言中的继承和实现)