Go 结构 体指针
提示
- Structs and Pointers in Go: Structs in Go can store variables of different data types, and pointers can be created to these struct types.
- Accessing and Modifying Struct Members: Struct members can be accessed and modified using pointers, employing both dot and dereference operators.
- Example and Usage: Examples demonstrate creating struct variables, assigning addresses to pointer variables, and accessing or modifying struct members via pointers.
结构体类型存储不同数据类型的变量,我们使用结构体变量来访问结构体的成员。
在 Go 中,我们也可以创建结构体类型的指针变量。
在学习结构体指针之前,请确保了解:
Go 结构体指针
假设我们有这样一个结构体
type Person struct {
name string
age int
}
现在,让我们创建一个 Person 类型的结构体变量。
person1 := Person{"John", 25}
类似地,我们也可以创建结构体类型的指针变量。
var ptr *Person
我们现在可以将结构体变量的地址赋给这个指针变量。让我们看一个例子。
package main
import "fmt"
func main() {
// 声明一个结构体 Person
type Person struct {
name string
age int
}
// 结构体 Person 的实例
person1 := Person{"John", 25}
// 创建一个存储 person1 地址的
// 结构体类型指针
var ptr *Person
ptr = &person1
// 打印结构体实例
fmt.Println(person1)
// 打印结构体类型指针
fmt.Println(ptr)
}
输出
{John 25}
&{John 25}
在上述示例中,我们创建了一个结构体变量 person1,并初始化了结构体成员;name
为 John
和 age
为 25。
我们还创建了一个存储 person1 地址的结构体类型的指针变量。
var ptr *Person
ptr = &person1
由于 ptr 现在存储了 person1 的地址,因此在打印 ptr 时输出 &{John 25}
。
注意:我们也可以在同一行中创建结构体类型的指针并分配变量地址。例如,
var ptr = &person1
在 Golang 中使用指针访问结构体
我们也可以使用指针访问结构体的单个成员。例如,
// 使用指针访问结构体字段的程序
package main
import "fmt"
func main() {
// 声明一个结构体 Person
type Person struct {
name string
age int
}
person := Person{"John", 25}
// 创建一个存储 person 地址的
// 结构体类型指针
var ptr *Person
ptr = &person
// 访问 name 成员
fmt.Println("Name:", ptr.name)
// 访问 age 成员
fmt.Println("Age:", ptr.age)
}
输出
Name: John
Age: 25