匿名字段和内嵌结构体
结构体可以包含一个或多个匿名 (或者称为内嵌) 字段,即这些字段没有显式的名字。仅指明字段的类型,此时该类型就是字段的名字。匿名字段本身可以是一个结构体类型,即结构体可以包含内嵌的结构体。
匿名字段
匿名字段和面向对象编程中的继承概念相似,可以被用来模拟类似继承的行为。Golang 中的基础就是通过内嵌或组合来实现的,所以说在 Golang 中组合比继承更受欢迎。比如下面的例子:
type test struct {
name string
age int
int // 匿名字段
}
内嵌结构体
结构体也是一种数据类型,所以它同样可以作为匿名字段使用:
type Person struct {
Name string
Age int
Email string
}
type Student struct {
Person
StudentID int
}
下面的代码可以声明并初始化 Student 类型的变量:
st := Student {
Person: Person{"jack", 22, "jack@xxx.com"},
StudentID: 1000,
}
从这个示例可以看出,内层结构体被简单地插入或者内嵌进外层结构体。这种简单的 “继承” 机制使得 Golang 很轻松就能实现从一个或一些类型中继承部分或全部的实现。