GO语言基础语法-切片 | 青训营笔记

71 阅读2分钟

今天继续学习go语言的基础语法,而本章节学习Go语言中切片的相关用法,然后在此做个笔记。

一. 切片定义

切片是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。

切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。下面是一个简单的例子:

    // 声明切片类型
    var s []string        
    var i = []int{}
    var b = []bool{false, true}

切片拥有自己的长度和容量,我们可以通过使用内置的len()函数求长度,使用内置的cap()函数求切片的容量。

切片表达式从字符串、数组、指向数组或切片的指针构造子字符串或切片。它有两种变体:一种指定low和high两个索引界限值的简单的形式,另一种是除了low和high索引界限值外还指定容量的完整的形式。

    i := [5]int{1, 2, 3, 4, 5}
    c := i[1:3]  // c := i[low:high]

二.使用make()函数构造切片

我们第二种方式可以使用make函数对切片进行定义。如下代码所示:

    make([]Type, size, cap)

Type:切片的元素类型。size:切片中元素的数量。cap:切片的容量。

三.切片的遍历

切片的遍历方式和数组是一致的,支持索引遍历和for range遍历。

    arr := []int{1, 2, 3, 4}

    for i := 0; i < len(arr); i++ {
            fmt.Println(i, arr[i])
    }

    for index, value := range arr {
            fmt.Println(index, value)
    }

四.切片中添加元素

Go语言的内建函数append()可以为切片动态添加元素。 可以一次添加一个元素,可以添加多个元素,也可以添加另一个切片中的元素(后面需要添加…)。

    var arr []int
    arr = append(arr, 1)        
    arr = append(arr, 2, 3, 4)  
    arr2 := []int{5, 6, 7}  
    arr = append(arr, arr2...) 

每个切片会指向一个底层数组,这个数组的容量够用就添加新增元素。当底层数组不能容纳新增的元素时,切片就会自动按照一定的策略进行“扩容”,此时该切片指向的底层数组就会更换。“扩容”操作往往发生在append()函数调用时,所以我们通常都需要用原变量接收append函数的返回值。

五.切片中删除元素

Go语言中并没有删除切片元素的专用方法,我们可以使用切片本身的特性来删除元素。

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

要从切片a中删除索引为index的元素,操作方法是arr = append(arr[:index], a[index+1:]...)

这篇文章只用做笔记使用,写的不好请多多包涵!!!