Golang引用类型Slice Map Channel的底层原理

Slice
切片就是动态数组,可以动态扩容改变数组容量, 它是一个结构体,里面包含了指向数组的地址,并通过len、cap保存数组的元素数、容量
切片拷贝
深度拷贝:copy(sliceA,sliceB) 浅拷贝:sliceA = sliceB 切片之间的复制会拷贝数组指针、cap、len值,但数组指针指向同一个地址,如果是深度拷贝,将指针指向数组内容,而不是指针值进行拷贝 切片函数传递 在切片进行复制时,会将切片的值(指针、cap、len)复制一份,在函数内部可以改变原切片的值,但是,当涉及到append触发扩容时,原来的指针指向的地址会发生变化,之后再对数组值进行改变,原切片将不受影响 切片扩容 当使用append,golang会检查底层数组长度是否不够,如果长度不够,会新建一个数组把原数组的数据拷贝过去,再将slice中指向数组的指针指向新数组 其中新数组的长度一般十老数组的两倍,如

Golang引用类型Slice Map Channel的底层原理最先出现在Python成神之路

版权声明:
作者:Mr李
链接:https://www.techfm.club/p/10382.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>