Go切片详细讲解长度和容量

    //切片的声明方式
	//1.nil方式
	var slice []int;
	//2.make方式
	var slice_01 = make([]int,3);相当于长度和容量都是3;
    或者指定长度和容量var slice_01 = make([]int,3,5);
	//3.
	var slice_02 = []int{1,2,3};
	//4.m<=n
	var slice_03 = [m:n];

    切片的长度就是len比较简单也是我们明面能够看得到的,容量和长度有些不同;着重讲解
    var slice = make([]int,0,5);
	slice = append(slice, 1);
	slice = append(slice, 2);
	slice = append(slice, 3);
	fmt.Printf("len = %d and cap = %d",len(slice),cap(slice))
    len = 3 and cap = 5 长度没有超过容量,继续使用当前容量即容量没有变化
    继续追加
    slice = append(slice, 4);
	slice = append(slice, 5);
	fmt.Printf("len = %d and cap = %d",len(slice),cap(slice))
    len = 5 and cap = 5
    长度没有超过容量,len=cap了,还是没有超出容量所以继续使用当前容量即容量没有变化
    slice = append(slice, 6);
    fmt.Printf("len = %d and cap = %d",len(slice),cap(slice))
    长度要超出容量了,需要扩容,扩容的容量大小是当前长度*2,即cap = len * 2;
    len = 6 and cap = 10
    后续继续扩大长度的机制:
    如果当前切片的长度小于 1024 就会将容量翻倍;
    如果当前切片的长度大于 1024 就会每次增加 25% 的容量,直到新容量大于期望容量;    
    


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值