关于方法接收者值类型和指针类型

关于方法接收者值类型和指针类型

http://img1.sycdn.imooc.com//climg/602a02f10915527c08430360.jpg



http://img1.sycdn.imooc.com//climg/602a02c9097fbb2310400350.jpg

老师您好,从本届演示的案例打印结果看,使用值类型和指针类型都打印出了相同的结果,在调用时这两者有没有内存消耗上的区别,在实际开发工作过程中,我应该如何设计把握?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好, 值类型与引用类型对初学者来说确实有点不好把握,特别是有过其它类C语言这种带有指针类型的编程语言经验的同学。

一般使用上会一些规范的建议。

go语言官方推荐的做法是这样, 

当调用的方法的接受者是一个channel通道(在后面的课程中会讲解到),函数,map时,建议使用值类型,主要还是因为他们自身就是引用类型。 

当接受者是一个基本的数据类型时,比如前面咱们讲解的数值类型,字符串类型,建议使用值类型,值类型可以有效减少垃圾数据的产生。 

当调用的方法的接收者是需要修改数据时,可以使用引用类型,一般在加锁的时候,或者涉及到结构体字段值同步时,用到引用类型,这样效率更高。 言外之意,结构体,切片以及数组,当其中的元素是引用类型,而且在项目中明确知道其值可能会被修改时,建议使用引用类型做为接受者。


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师