go语言指针能比大小吗 go 语言指针

GO 一文搞懂指针和地址值的区别

go语言中的指针和地址值,在使用上常常具有迷惑性,主要锋绝拿是其特殊的宏汪*、符号的使用,可能会让你摸不透,本文希望能讲清楚go语言的指针(pointer)和值(value)。

创新互联公司专注于企业网络营销推广、网站重做改版、新疆网站定制设计、自适应品牌网站建设、html5商城网站制作、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新疆等各大城市提供网站开发制作服务。

这里先简单银搭的对指针和地址值概念做一个定义:

这是因为go方法传递参数的方式导致的,go方法函数传递参数传递的是一个拷贝,看看下面的程序会输出什么?

答案是8,而不是9,因为AddAge函数修改的是学生的一个备份,而不是原始的学生对象

如果你想正确的给学生年龄增加的话,函数传递的需要是这个值的指针,如下所示:

需要注意的是,这里我们的指针传递的仍然是一个拷贝,比如,如果你将s赋值给另外一个指针地址,不会影响原有的指针,这点可以自行实践下。

那在使用go语言开发的时候,何时该用指针何时改用地址值呢?比如考虑以下场景:

简单原则: 当你不确定该使用哪种的时候,优先使用指针

如果考虑在数组、切片、map等复合对象中使用指针和值,比如:

很多开发者会认为b会更高效,但是被传递的都是一个切片的拷贝,切片本身就是一个引用,所以这里被传递的其实没有什么区别。

对于指针和地址值的使用,大家需要牢记的一点就是go数据传递的不可变性,活学活用此特点,在无状态函数中此特性非常有用。

文章题目:go语言指针能比大小吗 go 语言指针
分享URL:https://www.cdcxhl.com/article28/dcpeijp.html

成都网站建设公司_创新互联,为您提供手机网站建设营销型网站建设定制网站企业建站云服务器软件开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设