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 男} ``` 以上是结构体指针的基本使用方法,需要注意的是,在使用指针时要确保指针指向的内存地址是有效的,否则会出现运行时错误。