Go语言切片 | 青训营笔记

93 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

一、本堂课重点内容

本堂课的知识要点有哪些?

  • Go语言切片

二、详细知识点介绍

本堂课介绍了哪些知识点?

Go语言切片

  1. Go语言中的切片就是长度可变,容量固定的相同类型元素的集合。

  2. 切片元素类型可以是Go语言任何合法的数据类型,包括复合数据类型。

  3. 切片声明可以使用var关键字,也可以使用短变量声明操作符,也可以使用内置函数。切片声明格式如下:

    格式1    var slice []type
    格式2    var slice = []type{value1,value2,value3,...,valueN}
    格式3    slice := []type{value1,value2,value3,...,valueN}
    格式4    var slice = make([]type,length)
    格式5    qw := make([]string,100)
    格式6    var slice = make([]type,length,capacity)
    格式7    slice := make([]type,length,capacity)
    
  4. 要声明指定长度及容量的切片,必须使用make函数。

  5. 切片为引用类型,声明后必须初始化,切片的零值为nil

  6. make函数创建的切片已经初始化完毕,其零值为元素类型的零值。

  7. 内置函数make用于创建切片、映射及通道。当用于创建一个切片时,它会创建一个隐藏的初始化为零值的数组,然后返回一个引用该隐藏数组的切片。

  8. 切片与数组一样,通过带方括号及下标索引来检索元素,不同的是,数组的检索范围是整个数组,而切片的检索范围是其长度值,而不是整个切片容量。

  9. 切片的操作:

    语法含义
    s[n]切片 s 中索引位置为 n 的项
    s[n:m]从切片 s 的索引位置 nm-1 处所获得的切片
    s[n:]从切片 s 的索引位置 nlen(s)-1 处所获得的切片
    s[:m]从切片 s 的索引位置 0m-1 处所获得的切片
    s[:]从切片 s 的索引位置 0len(s)-1 处所获得的切片
    cap(s)切片 s 的容量, cap(s)总是大于 len(s)
    len(s)切片 s 的长度, len(s)总是小于 cap(s)
    s[:cap(s)]如果 len(s)<cap(s),增加 s 的长度到其容量
  10. 遍历切片和遍历字符串及数组相似,可以采用普通的for循环来完成。for循环多用来修改某些元素值,如果不修改,可以使用后面的range循环。

  11. append函数的基本作用是为切片追加元素,使得原切片长度增加。如果长度还没达到切片的容量,则切片容量不会增加。当切片长度已等于其容量时继续增加元素,则会导致切片扩容,扩容大小取决于原来切片的容量。

  12. 切片也可以使用内置函数copy来复制,实现快速创建切片。其使用语法格式如下:

    n = copy(s1,s2)
    
  13. 内置的copy函数接受两个包含相同类型元素的切片作为参数,函数的功能是将第二个切片(源切片s2)复制到第一个切片(目标切片s1)中去,并返回复制元素的数量n

  14. copy函数第一个参数为[]byte类型的切片时,第二个切片(源切片)可以是[]byte类型,也可以是string类型。

  15. 利用内置函数append及切片的操作语法很容易实现切片增删改。

三、引用参考

我参考了哪些外部博客/笔记/文章?