1.6.3 结构体继承

  1. 在Go语言中,type name struct{}结构体就相当于其他语言中的class(类)的概念

  2. 其他语言中,方法是直接写在类里面。Go语言中,对于该结构体,如果存在方法,则是以func (结构体名) 方法名 {}的方式来声明

  3. Go语言中没有原生继承。但是可以使用interface实现,也叫组合;是使用组合来实现继承的

  4. 举例:

    1. 父类结构体,有两个结构体方法

      type Father struct {
          Name string
      }
      
      func (entity Father) Work() {
          // ...
      }
      
      func (entity Father) Study() {
          // ...
      }
    2. 创建一个子类,将Father结构体添加进去,变成其中的一个成员变量

      type Child struct {
          Father
          // ...
      }
    3. 这样,子类Child就可以直接调用父类的方法了,示例如下:

      child := Child()
      child.Study()
  5. 按照常规理解,子类调用父方法,应写成child.Father.Study(),但Go语言做了想滚优化,直接调用方法也可以找到父类中的方法

  6. 子类改写父类中的方法:

    func (entity Child) Study {
        entity.Father.Study()
        // ...
    }

Last updated