关于Go语言中的slice的一些使用心得

Slice的初始化

  • slice是一个引用类型,总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度。
    var fslice []int
  • 在声明slice的同时可以对其初始化 slice := []byte {'a', 'b', 'c', 'd'}
  • 也可以用make函数进行初始化StanOut := make([]string, 0) Make函数和New函数

Slice的使用

  • 新建了一个slice类型之后,如何向其中添加数据?官方文档上给出了几种做法:
  • 利用别的slice对其赋值
// 声明一个数组
var array = [10]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
// 声明两个slice
var aSlice, bSlice []byte

        // 演示一些简便操作
aSlice = array[:3] // 等价于aSlice = array[0:3] aSlice包含元素: a,b,c
aSlice = array[5:] // 等价于aSlice = array[5:10] aSlice包含元素: f,g,h,i,j
aSlice = array[:]  // 等价于aSlice = array[0:10] 这样aSlice包含了全部的元素
// 从slice中获取slice
aSlice = array[3:7]  // aSlice包含元素: d,e,f,g,len=4,cap=7
bSlice = aSlice[1:3] // bSlice 包含aSlice[1], aSlice[2] 也就是含有: e,f
bSlice = aSlice[:3]  // bSlice 包含 aSlice[0], aSlice[1], aSlice[2] 也就是含有: d,e,f
bSlice = aSlice[0:5] // 对slice的slice可以在cap范围内扩展,此时bSlice包含:d,e,f,g,h
bSlice = aSlice[:]   // bSlice包含所有aSlice的元素: d,e,f,g
  • 利用append函数
len 获取slice的长度
cap 获取slice的最大容量
append 向slice里面追加一个或者多个元素,然后返回一个和slice一样类型的slice
copy 函数copy从源slice的src中复制元素到目标dst,并且返回复制的元素的个数

注意:不能在初始化slice之后直接对slice赋值,例如str[1]="abc",这样会报错,因为初始化之后的slice是空值,还不能对其利用下标取值。此时应该使用append函数对slice实现增加操作。在使用append函数时,注意其返回类型为type而不是指针*type,例str=append(str, "abc"),此时sre[0]的值就是abc,以此类推。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值