值得一看
广告
彩虹云商城
广告

热门广告位

Golang指针与值传递的区别在哪

Go中所有参数传递均为值传递,区别在于传递的是数据副本还是地址。值传递复制变量内容,函数内操作不影响原值,适用于基本类型或小型结构体;指针传递复制变量地址,通过解引用可修改原始数据,适用于需修改原值、大型结构体或共享状态场景。例如,modifyValue(x int)无法改变原变量,而modifyPointer(x *int)能通过*x = 100修改原值;结构体同理,updatePersonByValue不改变原结构体,updatePersonByPointer则可直接更新字段,推荐对大对象使用指针传递以提升性能。

golang指针与值传递的区别在哪

在Go语言中,指针传递值传递的区别主要体现在函数调用时参数的传递方式以及是否能修改原始数据。虽然Go中所有参数传递都是“值传递”,但传递的内容可以是变量的值,也可以是变量的地址(即指盘),从而影响函数内外的数据交互。

值传递:传的是数据副本

当你将一个变量以值的形式传入函数时,系统会创建该变量的一个副本。函数内部操作的是这个副本,不会影响原始变量。

适合场景:基本类型(int、string、bool等)或小型结构体,不希望原数据被修改。

例如:

func modifyValue(x int) {
  x = 100
}

func main() {
  a := 10
  modifyValue(a)
  fmt.Println(a) // 输出 10,未改变
}

指针传递:传的是地址,可修改原值

当你传递的是变量的地址(使用&符),函数接收的是一个指针。通过解引用(*),可以直接操作原始内存位置的数据。

立即学习“go语言免费学习笔记(深入)”;

适合场景:需要修改原数据、处理大型结构体(避免复制开销)、共享状态。

小微助手

小微助手

微信推出的一款专注于提升桌面效率的助手型AI工具

小微助手52

查看详情
小微助手

例如:

func modifyPointer(x *int) {
  *x = 100
}

func main() {
  a := 10
  modifyPointer(&a)
  fmt.Println(a) // 输出 100,已被修改
}

结构体的常见情况

对于结构体,值传递会复制整个结构体,而指针传递只复制地址,效率更高,也便于修改。

即使你把结构体当作值传递,Go推荐对大对象使用指针传递以提升性能。

示例对比:

type Person struct {
  Name string
  Age int
}

func updatePersonByValue(p Person) {
  p.Age = 30
}

func updatePersonByPointer(p *Person) {
  p.Age = 30
}

调用第一个函数不会改变原结构体,第二个会。

基本上就这些。理解传的是“值”还是“指向地址的值”,就能掌握Go中参数修改的逻辑。

相关标签:

go golang go语言 ai 区别 golang String 结构体 bool int 指针 Struct Go语言 值传递 对象

大家都在看:

Go语言中CGo类型转换与非导出类型处理
Go语言单向通道:类型安全与API设计的关键
Go语言:使用hash/fnv包生成字符串哈希值
Go语言接口实例的健壮ID管理与映射策略
利用AJAX和Go构建交互式Web应用:从JavaScript调用Go后端服务
温馨提示: 本文最后更新于2025-09-23 16:30:13,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容