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}}