第五节——切片
Posted 想学习安全的小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五节——切片相关的知识,希望对你有一定的参考价值。
切片
- 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。
- 切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。
切片定义
- 定义格式:
var name []数据类型
- 例子:
var a []string
- 从数组中获取切片
a := [5]int1, 2, 3, 4, 5
s := a[1:3]
使用make定义切片
- 定义格式:
make([]T, size, cap)
- 例子:
a := make([]int, 2, 10)
切片的赋值与拷贝
- 拷贝前后两个变量共享底层数组,对一个切片的修改会影响另一个切片的内容
- 例子:
s1 := make([]int, 3) //[0 0 0]
s2 := s1 //将s1直接赋值给s2,s1和s2共用一个底层数组
s2[0] = 100
fmt.Println(s1) //[100 0 0]
fmt.Println(s2) //[100 0 0]
- 使用copy()函数复制切片,改变其一不会影响另一个
- 例子:
a := []int1, 2, 3, 4, 5
c := make([]int, 5, 5)
copy(c, a) //使用copy()函数将切片a中的元素复制到切片c
切片的遍历,可以使用for与for range
- 例子:
s := []int1, 3, 5
for i := 0; i < len(s); i++
fmt.Println(i, s[i])
for index, value := range s
fmt.Println(index, value)
使用append方法给切片动态添加新元素
- 例子:
var s []int
s = append(s, 1) // [1]
s = append(s, 2, 3, 4) // [1 2 3 4]
s2 := []int5, 6, 7
s = append(s, s2...) // [1 2 3 4 5 6 7]
从切片中删除元素
- 切片没有删除方法,只能截取删除元素前的片段与删除元素后的片段,略过删除元素后进行合并
- 例子:
a := []int30, 31, 32, 33, 34, 35, 36, 37
// 要删除索引为2的元素
a = append(a[:2], a[3:]...)
fmt.Println(a) //[30 31 33 34 35 36 37]
以上是关于第五节——切片的主要内容,如果未能解决你的问题,请参考以下文章