第五节——切片

Posted 想学习安全的小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五节——切片相关的知识,希望对你有一定的参考价值。

切片

  1. 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。
  2. 切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。

切片定义

  1. 定义格式:var name []数据类型
  2. 例子:var a []string
  3. 从数组中获取切片
a := [5]int1, 2, 3, 4, 5
s := a[1:3]

使用make定义切片

  1. 定义格式:make([]T, size, cap)
  2. 例子:a := make([]int, 2, 10)

切片的赋值与拷贝

  1. 拷贝前后两个变量共享底层数组,对一个切片的修改会影响另一个切片的内容
  2. 例子:
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]
  1. 使用copy()函数复制切片,改变其一不会影响另一个
  2. 例子:
a := []int1, 2, 3, 4, 5
c := make([]int, 5, 5)
copy(c, a)     //使用copy()函数将切片a中的元素复制到切片c

切片的遍历,可以使用for与for range

  1. 例子:
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方法给切片动态添加新元素

  1. 例子:
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]

从切片中删除元素

  1. 切片没有删除方法,只能截取删除元素前的片段与删除元素后的片段,略过删除元素后进行合并
  2. 例子:
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]

以上是关于第五节——切片的主要内容,如果未能解决你的问题,请参考以下文章

第五节:JQuery框架源码简析

第五节:JQuery框架源码简析

Linux内核第五节 20135332武西垚

《Nuitka打包实战指南》第五节 深入理解单文件打包模式

[struts2学习笔记] 第五节 编写struts2的action代码

第五节:JQuery框架源码简析