Go语言中的切片容量
已于 2025年03月17日 14:17 修改
访问次数:0
一、什么是切片容量
在go语言中,切片是动态数组,其结构定义如下:
type SliceHeader struct {
Data: uintprt
Len: int
Cap: int
}- Data: 用于存放数组数据
- Len:用于存放已经初始化的内存长度
- Cap:用于存放已申请的内存的长度,实际是:从头指针到尾指针到长度(或数组起始位置到结尾的长度),在对切片做切片操作时,Cap的计算规则是:(原切片尾地址-目标切片起始位置地址)/数据类型长度
二、切片初始化,切片操作示例
package main
import (
"fmt"
)
func main() {
// 初始化一个切片,长度为3, cap为4
var eg = make([]int, 3, 4)
//
fmt.println(eg, cap(eg))
// 输出为[0,0,0], 4; 这里初始化长度为3,而非4
var a = []int{1, 2, 3, 4, 5}
var b = a[1:4]
fmt.Println(len(b), cap(b))
// 输出为len: 3, cap: 4这里cap是从a的索引为1的位置到a的末尾
}
评论(0)