官术网_书友最值得收藏!

Type embedding

But what if you would like a struct to inherit the methods of another struct? The closest feature that the Go language offers to the concept of inheritance is known as type embedding. This feature is best explained through an example. Let's go back to the Person struct type:

type Person struct{
name string
age int
}

func (p Person) GetName()string{
return p.name
}

func (p Person) GetAge()int{
return p.age
}

Now, let's say that we would like to create a new struct type called Student, which has all the properties and methods of Person, plus some more:

type Student struct{
Person
studentId int
}

func (s Student) GetStudentID()int{
return s.studentId
}

Notice that in the preceding code, we included the type Person inside the struct definition of type Student, without specifying a field name. This will effectively make the Student type inherit all the exported methods and fields of the Person struct type. In other words, we can access the methods and fields of Person directly from an object of type Student:

s := Student{}
//This code is valid, because the method GetAge() belongs to the embedded type 'Person':
s.GetAge()
s.GetName()

In Go, when a type gets embedded inside another type, the exported methods and fields of the embedded type are said to be promoted to the parent or embedding type.

Let's explore how to build interfaces in Go in the next section.

主站蜘蛛池模板: 布拖县| 海林市| 沙田区| 华容县| 瑞金市| 兴国县| 镇远县| 郧西县| 徐州市| 弥勒县| 潮州市| 龙海市| 修文县| 浙江省| 尼勒克县| 四川省| 海林市| 博兴县| 旬阳县| 修水县| 沙雅县| 长顺县| 宁武县| 鄱阳县| 璧山县| 西宁市| 容城县| 呼伦贝尔市| 富宁县| 广汉市| 湖北省| 绥棱县| 和龙市| 栾川县| 舒城县| 长宁区| 四会市| 长葛市| 罗源县| 富锦市| 罗平县|