One minute
Golang Slice
总述
slice本质上 就是一个 内存地址指针, 通过 len、cap 实现内存块 的管理
实现
数据结构:
type slice struct {
array unsafe.Pointer
len int
cap int
}
// An notInHeapSlice is a slice backed by go:notinheap memory.
type notInHeapSlice struct {
array *notInHeap
len int
cap int
}
常用方法
- 扩容: growslice 扩容, len还是以前的大小, cap是新的cap.
- 拷贝: 简单的内存复制
- append: ?没找到实现
特殊设计
- 使用数组管理了最大cap, 避免溢出
55 Words
2019-05-24 17:43 +0800