go语言参数值和指针 golang指针( 三 )


答案是8,而不是9,因为AddAge函数修改的是学生的一个备份,而不是原始的学生对象
如果你想正确的给学生年龄增加的话,函数传递的需要是这个值的指针,如下所示:
需要注意的是,这里我们的指针传递的仍然是一个拷贝,比如,如果你将s赋值给另外一个指针地址,不会影响原有的指针,这点可以自行实践下 。
那在使用go语言开发的时候,何时该用指针何时改用地址值呢?比如考虑以下场景:
简单原则: 当你不确定该使用哪种的时候,优先使用指针
如果考虑在数组、切片、map等复合对象中使用指针和值 , 比如:
很多开发者会认为b会更高效 , 但是被传递的都是一个切片的拷贝,切片本身就是一个引用 , 所以这里被传递的其实没有什么区别 。
对于指针和地址值的使用,大家需要牢记的一点就是go数据传递的不可变性 , 活学活用此特点,在无状态函数中此特性非常有用 。
【go语言参数值和指针 golang指针】go语言参数值和指针的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于golang指针、go语言参数值和指针的信息别忘了在本站进行查找喔 。

推荐阅读