Go 结构体

结构体用于存储不同数据类型的变量。例如:

假设我们想存储一个人的姓名和年龄。我们可以创建两个变量:name 和 age 并存储值。

然而,假设我们要存储多个人的相同信息。

在这种情况下,为一个人创建变量可能是一项繁琐的任务。我们可以创建一个结构体来存储姓名和年龄来解决这个问题。

而且,我们可以为每个人使用相同的结构体。


声明 Go 结构体

在 Go 中声明结构体的语法是:

type StructureName struct {
  // structure definition 
}

这里,

  1. struct - 用于定义结构的关键字
  2. StructName - 结构体的名称

让我们看一个例子,

type Person struct {
  name string
  age  int
}

在这里,我们声明了一个名为 Person 的结构体。在花括号 {} 中,结构体包含两个变量 nameage


结构体实例

结构体定义只是一个蓝图。要使用结构体,我们需要创建它的实例。例如:

type Person struct {
  name string
  age  int
}

// create an instance of struct var person1 Person

在这里,我们创建了一个名为 person1 的实例,后跟结构体 Person 的名称。

现在,我们可以使用 person1 实例来访问和定义结构体属性。

// define the value of name and age
person1 = Person("John", 25)

我们也可以在创建结构体实例时直接定义结构体。例如:

person1 := Person("John", 25)

在这里,John 将被分配给 Person 结构体的 name 变量,25 将被分配给 age 变量。


示例:Golang 结构体

package main
import "fmt"

func main() {

  // declare a struct
  type Person struct {
    name string
    age  int
  }

// assign value to struct while creating an instance person1 := Person{ "John", 25}
fmt.Println(person1) // define an instance var person2 Person // assign value to struct variables
person2 = Person { name: "Sara", age: 29, }
fmt.Println(person2) }

输出

{John 25}
{Sara 29}

访问 Golang 中的结构体

我们可以使用结构体实例来访问结构体的各个元素。例如:

// Program to access the individual elements of struct

package main
import "fmt"

func main() {

  // declare a struct
  type Rectangle struct {
    length  int
    breadth int
}

  // declare instance rect1 and defining the struct
  rect := Rectangle{22, 12}

// access the length of the struct fmt.Println("Length:", rect.length) // access the breadth of the struct fmt.Println("Breadth:", rect.breadth)
area := rect.length * rect.breadth fmt.Println("Area:", area) }

输出

Length: 22
Breadth: 12
Area: 264

在这里,我们使用 . (点) 符号来访问结构体的属性。

  • rect.length - 访问结构体中 length 变量的值
  • rect.breadth - 访问结构体中 breadth 变量的值

Go 结构体中的函数

Go 还允许我们在结构体中创建函数。它将函数视为结构体的字段。例如:

// Program to use function as a field  of struct

package main
import "fmt"

// initialize the function Rectangle type Rectangle func(int, int) int
// create structure type rectanglePara struct { length int breadth int color string
// function as a field of struct rect Rectangle
} func main() { // assign values to struct variables result := rectanglePara{ length: 10, breadth: 20, color: "Red",
rect: func(length int, breadth int) int { return length * breadth },
} fmt.Println("Color of Rectangle: ", result.color)
fmt.Println("Area of Rectangle: ", result.rect(result.length, result.breadth))
}

输出

Color of Rectangle:  Red
Area of Rectangle:  200

在上面的示例中,我们将 Rectangle 函数定义为 rectanglePara 结构体的字段,并使用该函数计算矩形的面积。


你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战