美文网首页
go语言切片

go语言切片

作者: 夜空中乄最亮的星 | 来源:发表于2018-02-26 12:52 被阅读0次

    简介

    切片 是一种数据结构,这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数 append 来实现的。这个函数可以快速且高效地增长切片。还可以通过对切片再次切片来缩小一个切片的大小。因为切片的底层内存也是在连续块中分配的,所以切片还能获得索引、迭代以及为垃圾回收优化的好处。
    切片*的底层数据结构,这里我们叫切片的三要素吧:

    1. 指向底层数组的指针
    2. 长度
    3. 容量
    

    创建和初始化

    1. make

    一种创建切片的方法是使用内置的 make 函数。当使用 make 时,需要传入一个参数,指定切片的长度,例如:

    // 创建一个字符串切片
    // 其长度和容量都是 5 个元素
    slice := make([]string, 5)
    

    如果只指定长度,那么切片的容量和长度相等。也可以分别指定长度和容量例如:

    // 创建一个整型切片
    // 其长度为 3 个元素,容量为 5 个元素
    slice := make([]int, 3, 5)
    
    2. 使用切片字面量
    // 创建字符串切片
    // 其长度和容量都是 5 个元素
    slice := []string{"Red", "Blue", "Green", "Yellow", "Pink"}
    // 创建一个整型切片
    // 其长度和容量都是 3 个元素
    slice := []int{10, 20, 30}
    

    nil 和空切片

    声明空切片

    // 使用 make 创建空的整型切片
    slice := make([]int, 0)
    // 使用切片字面量创建空的整型切片
    slice := []int{}
    

    空切片在底层数组包含 0 个元素,也没有分配任何存储空间。想表示空集合时空切片很有用.例如,数据库查询返回 0 个查询结果时。
    最常见的示例,如何使用go存储结果集

    切片的使用

    赋值和切片
    // 创建一个整型切片
    // 其容量和长度都是 5 个元素
    slice := []int{10, 20, 30, 40, 50}
    // 改变索引为 1 的元素的值
    slice[1] = 25
    

    切片之所以被称为切片,是因为创建一个新的切片就是把底层数组切出一部分

    // 创建一个整型切片
    // 其长度和容量都是 5 个元素
    slice := []int{10, 20, 30, 40, 50}
    // 创建一个新切片
    // 其长度为 2 个元素,容量为 4 个元素
    newSlice := slice[1:3]
    
    对底层数组容量是 k 的切片 slice[i:j]来说
    长度: j - i
    容量: k - i
    

    相关文章

      网友评论

          本文标题:go语言切片

          本文链接:https://www.haomeiwen.com/subject/grbexftx.html