使用结构体指针可避免复制、提升性能并允许修改原值。通过&传地址,函数和方法中用*操作,如updatePerson(&person)和(p *Person) SetName()实现高效操作。

在Go语言中,结构体指针可以高效地传递给函数,避免复制整个结构体数据。直接将结构体的地址传入函数即可,函数内部通过指针访问和修改原始结构体成员。
结构体指针作为参数
定义函数时,参数类型设为结构体指针,调用时传入变量的地址。
type Person struct {
Name string
Age int
}
func updatePerson(p *Person) {
p.Name = "Alice"
p.Age = 30
}
func main() {
person := Person{Name: "Bob", Age: 25}
updatePerson(&person)
// person 现在是 {Name: "Alice", Age: 30}
}
为什么使用指针传递
使用指针传递结构体有以下几个好处:
- 节省内存:大结构体不会被复制,只传递一个指针
- 可修改原值:函数内能直接更改原始结构体字段
- 性能更优:避免不必要的数据拷贝,提升效率
接收者方法中的指针
当为结构体定义方法时,若需修改实例或提高性能,应使用指针接收者。
立即学习“go语言免费学习笔记(深入)”;
func (p *Person) SetName(name string) {
p.Name = name
}
func main() {
person := &Person{Name: "Tom"}
person.SetName("Jerry") // 正确修改原始值
}
基本上就这些。只要理解了指针传递的本质,就能灵活运用在函数和方法中。不复杂但容易忽略细节。










