栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

go cap扩容理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go cap扩容理解

 1、append扩容:

        1.1、新添加元素的个数+原来切片的元素个数,若小于原来切片的元素个数的2倍,cap等于原来切片的元素个数的2倍

        1.2、新添加元素的个数+原来切片的元素个数,若大于原来切片的元素个数的2倍,cap等于新添加元素的个数+原来切片的元素个数(若此时cap为奇数,自动加1,使cap为偶数)

package main

import "fmt"

func main() {
	var numbers []int

	numbers = append(numbers,0, 1)
	printSlice(numbers)

	numbers = append(numbers, 2,3,4)
	printSlice(numbers)

}

func printSlice(x []int){
	fmt.Printf("len=%d cap=%d slice=%vn",len(x),cap(x),x)
}

-----------------result-----------------
len=2 cap=2 slice=[0 1]
len=5 cap=6 slice=[0 1 2 3 4]

 2、slice截取扩容:cap等于截取的开始索引到原切片初始容量的元素个数

        2.1、b的容量=开始截取索引为0,到a的初始容量5的元素个数,所以cap(b) = 5

        2.2、c的容量=开始截取索引为2,到a的初始容量5的元素个数,所以cap(c) = 3

package main

import "fmt"

func main() {
	
	a := make([]int, 0, 5)
	printSlice(a)

	b := a[:2]
	printSlice(b)

	c := a[2:4]
	printSlice(c)

}

func printSlice(x []int){
	fmt.Printf("len=%d cap=%d slice=%vn",len(x),cap(x),x)
}

-----------------result-----------------
len=0 cap=5 slice=[]
len=2 cap=5 slice=[0 0]
len=2 cap=3 slice=[0 0]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号