struct实现继承和多重继承

零、知识点

继承
一个结构体嵌到另一个结构体,称作组合。

匿名和组合的区别:
1.如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承。
2.如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合。
3.如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承。

一、继承

1.1 代码

package main

import (
	"fmt"
)

type Person struct {
	Name string
}

type Student struct {
	Person
	Class int
}

func main() {
	var s Student

	s.Name = "Tom"
	s.Class = 3

	fmt.Println(s)
}

1.2 运行结果

[root@bogon go]# go run test.go 
{{Tom} 3}

二、多重继承

2.1 代码

package main

import (
	"fmt"
)

type Person struct {
	Name string
}

type School struct {
	Name string
}

type Student struct {
	Person
	Class int
	School
}

func main() {
	var s Student

	s.Person.Name = "Tom"
	s.School.Name = "DiYiXiaoXue"
	s.Class = 3

	fmt.Println(s)
}

2.2 运行结果

[root@bogon go]# go run test.go 
{{Tom} 3 {DiYiXiaoXue}}