GO 结构体指针
时间: 2023-07-20 08:19:14 浏览: 106
在Go语言中,结构体指针是一种特殊的指针类型,它指向一个结构体变量的内存地址,可以用于直接修改结构体变量的值,避免了值拷贝的开销,也可以用于在函数间传递结构体变量的引用。
结构体指针的定义方式与其他指针类型相同,使用`*`符号表示指针类型,例如:
```go
type Person struct {
name string
age int
gender string
}
var p *Person // 定义一个Person类型的指针变量p
```
在使用结构体指针时,需要注意以下几点:
1. 创建结构体指针变量时,需要使用`&`符号获取结构体变量的地址,例如:
```go
person := Person{name: "张三", age: 20, gender: "男"}
p := &person // 获取person变量的地址,并赋值给p
```
2. 使用结构体指针访问成员字段时,需要使用`->`符号,例如:
```go
fmt.Println(p->name) // 输出:"张三"
fmt.Println(p->age) // 输出:20
fmt.Println(p->gender) // 输出:"男"
```
3. 在函数间传递结构体指针时,可以使用指针类型的参数,例如:
```go
func modifyPerson(p *Person) {
p.age = 30
}
person := Person{name: "张三", age: 20, gender: "男"}
modifyPerson(&person) // 传递person变量的地址
fmt.Println(person) // 输出:{张三 30 男}
```
以上是结构体指针的基本使用方法,需要注意的是,在使用指针时要确保指针指向的内存地址是有效的,否则会出现运行时错误。
阅读全文