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

热门广告位

golang值类型和指针在函数传参中的差异

值类型传参复制数据,函数内修改不影响原值;指针类型传参传递地址,可修改原始变量。例如,int值传递不改变原值,而int通过x=100可更新原变量。结构体较大时,指针传递避免复制开销并支持字段修改,如Person结构体使用指针参数提升效率与可变性。选择依据为是否需修改原值及数据大小,注意避免指针滥用导致意外修改。

golang值类型和指针在函数传参中的差异

在Go语言中,函数传参时使用值类型和指针类型有明显的行为差异,主要体现在数据是否被复制以及函数内部能否修改原始数据上。

值类型传参:传递的是副本

当把一个值类型变量(如 int、float64、struct 等)作为参数传入函数时,Go会创建该值的一个副本。函数内部对参数的修改不会影响原始变量。

例如:

协和·太初

协和·太初

国内首个针对罕见病领域的AI大模型

协和·太初38

查看详情
协和·太初


func modifyValue(x int) {
  x = 100
}

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

这里 xa 的副本,修改 x 不会影响 a

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

指针类型传参:传递的是地址

如果函数参数是指针类型,传入的是变量的内存地址。函数内部可以通过解引用修改原始变量的值。

例如:

协和·太初

协和·太初

国内首个针对罕见病领域的AI大模型

协和·太初38

查看详情
协和·太初


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

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

这里 *x = 100 修改了 a 指向的内存位置的值,因此原始变量被更新。

结构体场景中的性能与可变性考虑

对于大型结构体,值传递会导致整个结构体被复制,开销较大。使用指针传递更高效,且能统一处理可变性。

比如:


type Person struct {
  Name string
  Age int
}

func updatePerson(p *Person) {
  p.Age += 1
}

func main() {
  person := Person{Name: “Tom”, Age: 25}
  updatePerson(&person)
  fmt.Println(person) // {Tom 26}
}

使用指针不仅避免了复制大对象,还能直接修改原结构体字段。

基本上就这些。值传递安全但可能低效,指针传递高效且支持修改原值,选择取决于是否需要修改和数据大小。注意合理使用,避免不必要的指针暴露导致意外修改。不复杂但容易忽略细节。

相关标签:

go golang go语言 ai golang String 结构体 int 指针 值类型 指针类型 Struct Go语言 值传递 对象

大家都在看:

理解Go语言中Map的参数传递:指针与值的选择
Go语言文件命名规范:下划线或点开头的源文件为何被构建工具忽略?
Go语言方法接收器:理解值与指针的自动转换与方法集规则
Go语言中高效读取大尺寸UTF-8字符串:使用bufio优化输入操作
Go语言中Map的参数传递:指针与惯用法解析
温馨提示: 本文最后更新于2025-09-30 16:31:56,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 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赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容