值、引用、指针类型有什么不同?

conviceva · · 8123 次点击
polaris
社区,需要你我一同完善!
采用 markdown,所以,换行也是 markdown 的语法
#8
更多评论
golang里面有引用这个概念吗?
#1
本人学java的,习惯把golang跟java中的类型作对比 ,个人总结如下: golang中从储值上分成两种类型,存储型(int、float、string、slice)和非存储型(func) 这里只针对存储型的 值:存储型大部分都是值传递(包括 int、float、bool、array等等)在函数调用中作为参数传递时,会copy出一份副本到函数内部操作,对副本的操作跟外部的变量值无关。 引用:而slice、string、map三种类型比较特殊,类似于指针传递(我把这3中类型归类为引用类型),其中slice比较特殊,要修改slice的长度依然需要通过指针传递并操作。 指针:针对某一个变量所在内存地址的引用,作为参数传递时无需copy副本,函数调用中指针传递只占用8byte,对于比较大的结构体传递时用指针效率更高一些。并且指针可以操作任何存储型变量的值。 实际上golang并没有区分值和引用,只是个人理解。 刚入门golang,以上纯属个人理解,有错误希望大神及时指正。
#2