文章目录
- Go学习-Day6
- 封装
- 继承
- 接口
Go学习-Day6
- 个人博客:CSDN博客
封装
- 类似java的类的封装,这里我们利用大小写和工厂模式来实现封装的功能
- 略过
继承
-
相似的类具有相似的方法,反复绑定相同的方法,代码冗余,所以引入了继承的概念
-
嵌套匿名结构体来实现继承的效果
-
动手实践!
-
type Node struct {Name string `json:"name"`Password string `json:"password"` }type Point struct {NodeX intY 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关键字,只要一个变量类型,绑定了接口中所有的方法,这个变量就能实现这个接口
-
这个变量就能导入到含有接口作为变量的函数内