Go 语言结构体学习笔记

什么是结构体?

结构体是一种用户定义的数据类型,它可以包含不同类型的数据字段。在 Go 语言中,结构体是基本类型之一,可以像 int、float32 等数据类型一样进行操作。

定义结构体

可以通过 type 和 struct 关键字来定义结构体,例如:

goCopy Code
type Person struct { Name string Age int Sex string }

上面的代码定义了一个名为 Person 的结构体,它包含了三个字段:Name、Age 和 Sex,分别表示人的姓名、年龄和性别。

创建结构体对象

通过结构体定义创建结构体对象,例如:

goCopy Code
person := Person{Name: "Tony", Age: 18, Sex: "Male"}

上面的代码创建了一个名为 person 的结构体对象,并赋值为 Tony、18 和 Male。

访问结构体字段

结构体对象中的字段可以通过点号(.)来访问,例如:

goCopy Code
fmt.Println(person.Name) // 输出:Tony fmt.Println(person.Age) // 输出:18 fmt.Println(person.Sex) // 输出:Male

上面的代码分别输出了 person 结构体对象中的 Name、Age 和 Sex 字段的值。

结构体作为参数

结构体可以作为函数的参数进行传递。例如:

goCopy Code
func printPerson(person Person) { fmt.Printf("Name: %s, Age: %d, Sex: %s\n", person.Name, person.Age, person.Sex) } func main() { person := Person{Name: "Tony", Age: 18, Sex: "Male"} printPerson(person) }

上面的代码定义了一个名为 printPerson 的函数,接受一个类型为 Person 的参数。在 main 函数中,创建一个 person 结构体对象,并将其作为参数传递给 printPerson 函数。

结构体指针

结构体指针是一种指向结构体的指针变量。可以通过 & 符号获取结构体指针。例如:

goCopy Code
personPtr := &Person{Name: "Tony", Age: 18, Sex: "Male"}

上面的代码创建了一个指向 person 结构体对象的指针变量。

可以通过 * 符号对结构体指针进行解引用,访问结构体字段。例如:

goCopy Code
fmt.Println((*personPtr).Name) // 输出:Tony fmt.Println((*personPtr).Age) // 输出:18 fmt.Println((*personPtr).Sex) // 输出:Male

上面的代码输出了指针变量 personPtr 指向的结构体对象中的 Name、Age 和 Sex 字段的值。由于这样的语法十分繁琐,Go 语言还提供了一种简洁的语法:

goCopy Code
fmt.Println(personPtr.Name) // 输出:Tony fmt.Println(personPtr.Age) // 输出:18 fmt.Println(personPtr.Sex) // 输出:Male

上面的代码使用了 personPtr.Name、personPtr.Age 和 personPtr.Sex 的语法来访问结构体字段,这种语法更加简洁易读。

实例

下面是一个使用结构体的示例程序:

goCopy Code
package main import "fmt" type Person struct { Name string Age int Sex string } func printPerson(person Person) { fmt.Printf("Name: %s, Age: %d, Sex: %s\n", person.Name, person.Age, person.Sex) } func main() { person := Person{Name: "Tony", Age: 18, Sex: "Male"} printPerson(person) personPtr := &Person{Name: "Alice", Age: 20, Sex: "Female"} fmt.Println(personPtr.Name) }

运行上面的代码,输出如下:

Copy Code
Name: Tony, Age: 18, Sex: Male Alice