Go语言内建容器之切片

一、Go语言中切片定义
1.Slice本身没有数据,是对底层array的一个view
2.修改Slice中的某一个值,原数组中的值也会更新
示例1:

arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
fmt.Println("arr[2:6] = ", arr[2:6])
fmt.Println("arr[:6] = ", arr[:6])
fmt.Println("arr[2:] = ", arr[2:])
fmt.Println("arr[:] = ", arr[:])
s := arr[2:6]
s[0] = 10
fmt.Println(arr)

二、Go语言中的Reslice
示例2:

arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
s := arr[2:6]
fmt.Println(s)
s = s[:3]
fmt.Println(s)
s = s[1:]
fmt.Println(s)
s = s[:]
fmt.Println(s)

三、Slice的扩展
1.slice可以向后扩展,不可以向前扩展
2.s[i]不可以超越len(s),向后扩展不可以超越底层数组cap(s)
示例3:

arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
s1 := arr[2:6]
fmt.Println(s1)
s2 := s1[3:5]
fmt.Println(s2)

四、向Slice添加元素
1.添加元素是如果超越cap,系统会重新分配更大的底层数组
2.由于值传递的关系,必须接收append的返回值
3.s = append(s, val)
示例4:

arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
s1 := arr[2:6]
s2 := s1[3:5]
s3 := append(s2, 10)
s4 := append(s3, 11)
fmt.Println("s1 = ", s1)
fmt.Println("s2 = ", s2, len(s2), cap(s2))
fmt.Println("s3 = ", s3, len(s3), cap(s3))
fmt.Println("s4 = ", s4, len(s4), cap(s4))
fmt.Println(arr)

五、Slice的创建
示例5:

var s []int
s1 := []int{2, 4, 6, 8}
s2 := make([]int, 16)
s3 := make([]int, 10 , 32)

六、Slice的复制
示例6:

s1 := []int{2, 4, 6, 8}
s2 := make([]int, 16)
copy(s2, s1)

七、Slice的删除
1.删除中间元素
示例7:

s2 = append(s2[:3], s2[4:]...)

2.删除头元素
示例8:

s2 = s2[1:]

3.删除尾元素
示例9:

s2 = s2[:len(s2) - 1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值