golang指针传递和引用传递区别(golang 值传递和引用传递)

指针传递和引用传递的定义

golang中,指针传递和引用传递均涉及变量在函数传递时的操作。指针传递是指将变量在函数调用时的地址传递给函数,函数中得到的是该变量的内存地址。引用传递则是将变量本身传递给函数,函数中得到的是该变量在内存中开辟的空间。需要注意的是,golang中不存在真正的引用传递,因为即使传递的是变量本身,也是以指针的方式传递的。

指针传递与引用传递的区别

指针传递和引用传递在数据传递方式上的不同导致了它们的行为有很大的差别。指针传递在函数中获取的是变量的内存地址,可以通过该地址改变变量的值。换句话说,指针传递可以实现函数对参数的修改。而引用传递则不同,函数中获取的是变量的副本,所以虽然可以通过该变量改变副本的值,但无法直接改变原来变量的值。因此,引用传递只能实现对复合类型(如数组和结构体)中某些属性的修改,无法改变整个复合类型的值。

适用场景比较

对于不同类型的变量,应当根据其特点选用不同的传递方式。对于基本类型,由于其本身的特点,通常应选择指针传递。因为指针传递可以实现对变量值的修改,更加灵活。但对于复合类型,特别是大规模的复合类型,其在内存中所占用的空间较大,在传递时会带来较大的开销。为避免不必要的内存开销,应当选择引用传递。但由于golang本身采用了值传递(即复制传递)的方式,所以即使使用引用传递,仍然需要注意传递时所带来的开销。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/golang-hiisk.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年5月2日 上午4:51
下一篇 2023年5月2日 上午4:51

猜你喜欢