Go语言程序演示提升字段的用法


在Go语言中,提升字段是指嵌入到另一个结构体内的结构体,其字段也可以通过嵌入它们的结构体访问。本文将介绍三种不同的方法来演示使用提升字段,包括使用和不使用指针的方法。

使用指针

在这个例子中,我们将使用指针来演示提升字段。字段名将通过指针设置,信息将使用点表示法打印。

算法

  • 步骤1 − 创建一个main包,并在程序中声明fmt(格式化包),其中main生成可执行代码,fmt帮助格式化输入和输出。

  • 步骤2 − 创建一个Person结构体,包含两个字段:name(字符串类型)和age(整型)。

  • 步骤3 − 然后,创建一个Employee结构体,其中包含一个提升字段*Person和一个整型id,这意味着Person的字段可以通过指针访问。

  • 步骤4 − 创建一个main函数,设置Person结构体中的字段值,然后使用指针将Person结构体值赋值给Employee结构体。

  • 步骤5 − 使用fmt包中的Println函数在控制台上打印所有员工信息。

示例

以下示例演示如何创建Go语言程序来演示使用指针的提升字段。

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

不使用指针

在这种方法中,将创建一个person和employee结构体,其中employee结构体将包含提升字段,其字段的值将在main函数中设置,并使用点表示法和字段名打印。

算法

  • 步骤1 − 创建一个main包,并在程序中声明fmt(格式化包),其中main生成可执行代码,fmt帮助格式化输入和输出。

  • 步骤2 − 创建一个Person结构体,包含两个字段:name(字符串类型)和age(整型)。

  • 步骤3 − 然后,创建一个Employee结构体,包含两个字段:一个整型id和一个提升字段person。

  • 步骤4 − 现在,创建一个main函数,在这个函数中创建一个employee结构体,并为提升字段Person的name和age提供值,并为id赋值。

  • 步骤5 − 最后,使用emp_info.name、emp_info.age和emp_info.id语法访问Person的name和age。

  • 步骤6 − 使用fmt包中的Println函数(其中ln表示换行)在控制台上打印所有上述信息。

示例

在下面的示例中,我们将了解如何创建Go语言程序来演示不使用指针的提升字段。

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结构体

在这个示例中,我们将编写一个Go语言程序来演示使用Animal和Dog结构体的提升字段。Animal结构体是Dog结构体中的提升字段。

算法

  • 步骤1 − 创建一个main包,并在程序中声明fmt(格式化包),其中main生成可执行代码,fmt帮助格式化输入和输出。

  • 步骤2 − 创建一个Animal结构体,包含两个字段:name(字符串类型)和age(整型)。

  • 步骤3 − 然后,创建一个Dog结构体,其中包含一个提升字段Animal和另一个字符串类型的字段Breed。

  • 步骤4 − 创建一个main函数,在其中设置提升字段的值并将其存储在Dog_struct中。

  • 步骤5 − 使用存储变量和点表示法访问字段。

  • 步骤6 − 然后,使用相同的表示法访问提升字段。

  • 步骤7 − 使用fmt包中的Println函数(其中ln表示换行)执行打印语句。

示例

以下示例演示如何创建Go语言程序来演示使用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

结论

我们编译并执行了演示提升字段的程序,使用了三个示例。在第一个示例中,提升字段值在结构体中设置,在第二个示例中,它们通过指针设置,在第三个示例中,我们使用了Animal结构体。

更新于:2023年4月4日

347 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.