探索Golang中通过嵌套匿名结构体实现继承的方法,以及利用接口实现多态的原理。深入了解Golang中继承与接口的应用和实现方式。
封装
类似java的类的封装,这里我们利用大小写和工厂模式来实现封装的功能
略过
继承
相似的类具有相似的方法,反复绑定相同的方法,代码冗余,所以引入了继承的概念
嵌套匿名结构体来实现继承的效果
动手实践!
type Node struct { Name string `json:"name"` Password string `json:"password"`}type Point struct { Node X int Y int}func (a *Node) ok() { a.Name = "bbbb"}func main() { var a Point = Point{ Node{"aaa", "bbb"}, 1, 2, } a.ok() fmt.Println(a)}
注意看,a.ok()其实是a.Node.ok()底层自动识别,可以省略匿名结构体
基本数据类型可以匿名,但是不能出现多个相同类型的匿名基本类型
接口
多态主要就是由接口来实现的
声明
type inter interface { a() b()}
实现接口
import "fmt"type inter interface { a() b()}type obj1 struct {}type union struct {}func (o obj1) a() { fmt.Println("okkk") //用node对象给接口的a()实现}func (o obj1) b() { fmt.Println("ohhh")}func (u union) ok(in inter) { in.a() in.b()}func main() { x := union{} y := obj1{} x.ok(y)}
从上面我们可以看到,在声明一个接口之后,我们用工厂方法法obj对应接口的所有方法给实现了,然后另外整一个抽象类似的的结构体,绑定一个方法运行接口,这样我们就能通过接口把这两个类给链接在一起。
总结。
interface类型可以定义一组方法,方法不用实现,并且不能含有变量
Go语言没有implements关键字,只要一个变量类型,绑定了接口中所有的方法,这个变量就能实现这个接口文章来源:https://www.toymoban.com/news/detail-673782.html
这个变量就能导入到含有接口作为变量的函数内文章来源地址https://www.toymoban.com/news/detail-673782.html
到了这里,关于Golang中继承与接口实现详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!