这里我们称go 的结构体为类

"""

package main

import "fmt"

//定义一个类 这里称之为 父类
type Human struct {
name string
sex string
}

// 定义一个父类方法 eat()
func (this *Human) Eat() {
fmt.Println("Human.Eat()...")

}

// 定义一个父类方法 walk
func (this *Human) Walk() {
fmt.Println("Human.Walk()...")

}

// 定义一个子类 子类Superman
type Supeman struct {
Human // 继承Human
level int

}

// 给子类重写义父类方法EAT()
func (this *Supeman)Eat() {
fmt.Println("Superman EAT()...")
}

// 定义子类方法fly

func (this *Supeman)fly() {
fmt.Println("Superman fly()...")

}
// 我们看一下子类是否都是好的
func (this *Supeman)Printer() {
fmt.Println("name ",this.name)
fmt.Println("sex",this.sex)
fmt.Println("level",this.level)

}
func main() {
// 初始化一个父类
h:= Human{"zhangsan","famale"}
h.Eat()
h.Walk()
// 初始化一个子类1
//s := Supeman{Human{"gaoyuanyuan","male"},88}
// 初始化子类2
var s Supeman
s.name = "xuqing"
s.sex = "male"
s.level = 99

s.Walk() // 用的父类的防范
s.Eat() //调用子类的方法,这我们重写父类的方法EAT()
s.fly() // 调用子类的方法
s.Printer() // 调用子类的printer方法

}
"""

_____+++++++______

输出:

Human.Eat()...
Human.Walk()...
Human.Walk()...
Superman EAT()...
Superman fly()...
name xuqing
sex male
level 99