Golang 使用promoted fields(提升字段)

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

结论

我们编写并执行了使用三个示例描述推广字段的程序。在第一个示例中,推广字段的值在结构体中设置,而在第二个示例中,它们通过指针设置,在第三个示例中,我们使用了一个动物结构体。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程