本文介绍: 1.GO中只有值传递,没有引用传递2.如果需要函数内部的修改能影响到函数外部,那就传指针3.map/chan本身就是指针,是引用类型的,直接传其本身即可4.slice 在传递过程中,本质上传递的是其本身的内存地址 array,也即是指针,直接传slice本身即可5.slice的append操作需要修改结构体的len或者cap,类似于struct。如果需要传递到函数外部,需要传指针,或者通过函数返回值返回结果。
而Go语言中的一些让你觉得它是引用传递的原因,是因为Go语言有值类型
和引用类型
,但是它们都是值传递
。
值类型 有int、float、bool、string、array、sturct等
引用类型有slice,map,channel,interface,func等
值类型:内存中变量存储的是具体的值。 比如: var num int 。num存放的是具体的int值,但是变量在内存中的地址可以通过 &num 来获取。
引用类型:变量直接存放的就是一个地址值,这个地址值指向的空间存的才是值。
引用类型分析
slice
切片make不够容量
切片make够容量
map
chan
总结:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。