go 语言切片slice

概念

Slice代表边长的序列,序列中的每个元素的类型都想同。可以通过对切片再次切片来缩小一个切片的大小,因为切片的底层内存也是在连续块中分配,所以切片还能获得索引,迭代以及为垃圾回收优化的好处。

切片的创建make

//创建一个字符串切片
//其长度和容量都为5
slice := make([]string,5)

//创建一个整数切片
//其长度为3容量为5
slice := make([]int,3,5)

//初始化切片的第100个元素
slcie := []string{99:""}

切片和数组的声明是不同的

//创建有3个元素的整型数组
array := [3]int{10,20,30}

//创建长度和容量都为3的整型切片
slice := []int{10,20,30}

修改切片

// 创建一个整型切片
// 其长度和容量都是 5 个元素
slice := []int{10, 20, 30, 40, 50}
// 创建一个新切片
// 其长度是 2 个元素,容量是 4 个元素
newSlice := slice[1:3]
// 修改 newSlice 索引为 1 的元素
// 同时也修改了原来的 slice 的索引为 2 的元素
newSlice[1] = 35

在这里插入图片描述

使用append向切片增加元素

//创建切片
slice := []int{1,2,3,4,5}
//创建一个新的切片
//长度为2容量为4
newSlice := slice[1:3]
//使用切片的原有的容量来分配一个新的元素
//将新的元素赋值60
newSlice := append(newSlice,60)	

在这里插入图片描述
因为 newSlice 在底层数组里还有额外的容量可用, append 操作将可用的元素合并到切片的长度,并对其进行赋值。由于和原始的 slice 共享同一个底层数组, slice 中索引为 3 的元素的值也被改动了。
如果切片的底层数组没有足够的可用容量, append 函数会创建一个新的底层数组,将被引用的现有的值复制到新数组里,再追加新的值.如下:

使用 append 同时增加切片的长度和容量


// 创建一个整型切片
// 其长度和容量都是 4 个元素
slice := []int{10, 20, 30, 40}// 向切片追加一个新元素
// 将新元素赋值为 50
newSlice := append(slice, 50)

当这个append操作完成后,newslice拥有一个全新的底层数组,这个数组容量是原来的两倍。
在这里插入图片描述

函数 append 会智能地处理底层数组的容量增长。在切片的容量小于 1000 个元素时,总是
会成倍地增加容量。一旦元素个数超过 1000,容量的增长因子会设为 1.25,也就是会每次增加 25%
的容量。随着语言的演化,这种增长算法可能会有所改变。

切片的遍历

for index,value := range slice{
	fmt.Printf("Index: %d Value: %d\n",index , value)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值