Golang 使用promoted fields(提升字段)
在Golang中,promoted fields是嵌入在其他结构体内部的结构体,并且它们的字段也可以被嵌入的结构体访问。在本文中,我们将了解使用指针和不使用指针两种不同的方法来展示promoted field的使用。
使用指针
在这个示例中,我们将使用指针来展示promoted field。字段名称将使用指针设置,并且使用点符号打印信息。
步骤
- 步骤1 - 创建一个main包,并在程序中声明fmt(格式化包),其中main用于产生可执行代码,而fmt用于格式化输入和输出。
-
步骤2 - 创建一个Person结构体,包含两个字段name和age,类型分别为string和int。
-
步骤3 - 创建一个Employee结构体,其中包含一个提升字段 *Person和一个类型为整数的id字段,这意味着可以通过指针访问Person的字段。
-
步骤4 - 创建一个main函数,设置Person结构体中的字段值,然后使用指针将个人结构体的值分配给Employee结构体。
-
步骤5 - 使用fmt包的Println函数在控制台打印所有员工信息。
示例
以下示例演示了如何使用指针创建Golang程序来展示promoted fields的使用。
package main
import "fmt"
type Person struct {
name string
age int
}
type Employee struct {
*Person
id int
}
func main() {
ps := &Person{name: "Geneva", age: 28}
emp_info := &Employee{Person: ps, id: 442}
fmt.Println("The Employee name is:", emp_info.name)
fmt.Println("The Employee age is:", emp_info.age)
fmt.Println("The Employee id is:", emp_info.id)
}
输出
The Employee name is: Geneva
The Employee age is: 28
The Employee id is: 442
不使用指针
在这种方法中,将创建一个人员和雇员结构,在其中雇员结构将包含升职字段,字段的值将在主函数中设置并使用点与字段一起打印。
步骤
- 步骤1 - 创建一个 main 包并在程序中声明 fmt(format 包) 包,其中 main 生成可执行代码,fmt 用于格式化输入和输出。
-
步骤2 - 创建一个 Person 结构,包含两个字段 name 和 age,类型分别为 string 和 int。
-
步骤3 - 接下来,创建一个 Employee 结构,包含两个字段:id 是 int 类型的,person是结构中的一个被升级的字段。
-
步骤4 - 现在,创建一个主函数,在该函数中创建一个 employee 结构,并为 person 中的 name 和 age 赋值,并为 id 赋值。
-
步骤5 - 最后,使用 emp_info.name、emp_info.age 和 emp_info.id 语法访问 Person 的 name 和 age。
-
步骤6 - 使用 fmt 包中的 Println 函数将上述所有信息打印到控制台,其中 ln 表示换行。
示例
在下面的示例中,我们将了解如何创建 Golang 程序来描述不使用指针的升级字段的用法。
package main
import "fmt"
type Person struct {
name string
age int
}
type Employee struct {
Person // Promoted field
id int
}
func main() {
emp_info := Employee{
Person: Person{
name: "Veronica",
age: 36,
},
id: 600,
}
fmt.Println("The Employee name is:", emp_info.name)
fmt.Println("The Employee age is:", emp_info.age)
fmt.Println("The Employee id is:", emp_info.id)
}
输出
The Employee name is: Veronica
The Employee age is: 36
The Employee id is: 600
使用Animal和Dog结构
在这个示例中,我们将编写一个Golang程序,展示使用Animal和Dog结构来使用提升的字段。Animal结构是Dog结构中的提升字段。
步骤
- 第1步 - 在程序中创建一个包main,并声明fmt(格式化包)包,其中main生成可执行代码,而fmt用于格式化输入和输出。
-
第2步 - 创建一个Animal结构,其中包含两个字段name(string类型)和age(int类型)。
-
第3步 - 然后,创建一个Dog结构,其中包含一个提升字段Animal和另一个字段Breed(string类型)。
-
第4步 - 创建一个主函数,在其中设置提升字段的值并将其存储在Dog_struct中。
-
第5步 - 使用存储变量和点表示法访问字段。
-
第6步 - 然后,使用相同的表示法访问提升字段。
-
第7步 - 使用fmt包的Println函数执行打印语句,其中ln表示新行。
示例
下面的示例展示了如何创建一个Golang程序,展示使用Animal和Dog结构来使用提升的字段。
package main
import "fmt"
type Animal struct {
name string
age int
}
type Dog struct {
Animal
Breed string
}
func main() {
Dog_struct := Dog{
Animal: Animal{
name: "pommy",
age: 6,
},
Breed: "Labrador retriever",
}
fmt.Println(Dog_struct.name)
fmt.Println(Dog_struct.age)
fmt.Println(Dog_struct.Breed)
fmt.Println(Dog_struct.Animal.name)
fmt.Println(Dog_struct.Animal.age)
}
输出
pommy
6
Labrador retriever
pommy
6
结论
我们编写并执行了使用三个示例描述推广字段的程序。在第一个示例中,推广字段的值在结构体中设置,而在第二个示例中,它们通过指针设置,在第三个示例中,我们使用了一个动物结构体。