0%

Go语言OOP实现

Golang是支持面向对象编程特性的语言,不过在Golang中没有类的概念,而是通过一些别的方式来实现。

一、基础

      Golang是支持面向对象编程特性的语言,不过在Golang中没有类的概念,而是一些别的方式来实现。

  1. struct:通过给结构体类型定义方法实现传统OOP中的方法,具体做法是在方法当中定义接收者(类型接收者或指针接收者),位于func关键字和方法名之间。

    • 当接收者是指针类型时,调用时和类型接收者一样,Golang内部会自动转化
    • 结构体是值类型
    • 结构体的所有字段在内存中是连续的
    • 结构体是用户单独定义的类型,和其它类型进行转换时需要有完全相同的属性(名字、个数、类型)
    • 结构体进行type重新定义(相当于取别名),Golang认为是新的数据类型,但是相互间可以强转
    • 结构体的每个字段上可以写上一个tag,该tag可以通过反射机制获取,常见的使用场景就是序列化和反序列化
  2. interface

    • interface是方法的集合,要实现一个接口,必须实现该接口里面的所有方法
    • 如果一个接口没有任何方法,则称该接口为空接口,任何类型都实现了空接口
    • interface是Golang中实现多态的一种形式
    • interface可以嵌套,可以简单理解为继承
      • 子接口拥有父接口的所有方法,想要使用该子接口的话,则必须将父接口和子接口的所有方法都实现
    • interface也可以进行类型转换
  3. map

  4. reflection

二、实现

  1. 封装

  2. 继承

  3. 多态

三、参考

  1. 参考一
  2. 参考二
  3. 参考三
  4. 参考四