Go语言中可通过指针直接使用.操作符访问结构体字段,编译器自动解引用,无需显式书写(*ptr).Field;传指针给函数可修改原数据,传值则不影响原始结构体。

在Go语言中,使用指针访问结构体字段非常常见,尤其在函数传参或操作大型结构体时。Go会自动处理指针到结构体字段的访问,无需手动解引用。
直接通过指针访问字段
即使变量是指向结构体的指针,也可以直接用.操作符访问字段,Go会自动解引用。
示例:
type Person struct { Name string Age int}func main() { p := &Person{Name: "Alice", Age: 30} // 直接通过指针访问字段 fmt.Println(p.Name) // 输出: Alice fmt.Println(p.Age) // 输出: 30 // 修改字段值 p.Age = 31 fmt.Println(p.Age) // 输出: 31}
这里p是指针,但依然可以用p.Name直接访问,不需要写成(*p).Name。
函数中修改结构体内容
当把结构体指针传入函数时,可以直接修改原始数据。
立即学习“go语言免费学习笔记(深入)”;
func updatePerson(p *Person) { p.Age += 1 // 自动解引用 p.Name = "Updated"}func main() { person := &Person{Name: "Bob", Age: 25} updatePerson(person) fmt.Printf("%+vn", *person) // 输出: {Name:Updated Age:26}}
如果传的是值而不是指针,函数内修改不会影响原结构体。
显式解引用(较少使用)
虽然Go允许自动解引用,但你也可以显式写成(*pointer).Field。
ptr := &Person{Name: "Charlie", Age: 28}fmt.Println((*ptr).Name) // 和 ptr.Name 效果一样
这种方式语法正确,但不如直接用ptr.Name简洁,因此实际开发中很少使用。
基本上就这些。Go的设计让指针操作更直观,尤其是结构体字段访问,无需担心取地址或解引用的细节。只要记住:用.就行,编译器会处理好。
以上就是Golang如何使用指针访问结构体字段的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1415741.html
微信扫一扫
支付宝扫一扫