type slice struct { ptr *Elem //指向本地数组 len int //当前切片长度 cap int //切片容量 } /*切片容量与扩容 1.make([]int,len,cap) //直接指定容量,避免后期扩容操作 2.当容量满的时候,扩容,规则:new_len = 2*(old_len+add_len) 注意: 多个切片可能共享一个本地数组,所以对切片的修改可能影响其他的切片, 发生扩容后也可能影响不到原来的切片,所以修改后记得重新复制给原来的切片 扩容操作在 append函数中发生 切片零值是 nil */
图示:
这个是 slice 的数据结构,它很简单,一个指向真实 array 地址的指针 ptr ,slice 的长度 len 和容量 cap 。
go 切片原理
最新推荐文章于 2024-05-08 20:32:44 发布