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语言还没深入研究,各位看官还请指点一二。如果觉得还可以,请支持一下,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,310评论 6 13
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,931评论 1 45
  • 要穿最白最亮的寸衫 要淡蓝的海 要去奔流的河 要站在环山高速的马路边 要去最北地深深的雪海里 让海风,让河风,让列...
    尼龙小姐的日记阅读 289评论 0 1
  • 200天,转瞬即逝,一路走来真的好像老夫老妻一般,没有任何需要去适应、迁就的地方,这是我不曾有过的体验。 你就好似...
    Centerx阅读 391评论 1 2
  • 泛型 Swift中mutating关键字 Swift中protocol的功能比OC中强大很多,不仅能再class中...
    透支未来阅读 904评论 0 0