结构体用于存储不同数据类型的变量。例如:
假设我们想存储一个人的姓名和年龄。我们可以创建两个变量:name 和 age 并存储值。
然而,假设我们要存储多个人的相同信息。
在这种情况下,为一个人创建变量可能是一项繁琐的任务。我们可以创建一个结构体来存储姓名和年龄来解决这个问题。
而且,我们可以为每个人使用相同的结构体。
声明 Go 结构体
在 Go 中声明结构体的语法是:
type StructureName struct {
// structure definition
}
这里,
struct
- 用于定义结构的关键字StructName
- 结构体的名称
让我们看一个例子,
type Person struct {
name string
age int
}
在这里,我们声明了一个名为 Person
的结构体。在花括号 {}
中,结构体包含两个变量 name
和 age
。
结构体实例
结构体定义只是一个蓝图。要使用结构体,我们需要创建它的实例。例如:
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
结构体的字段,并使用该函数计算矩形的面积。