go语言切片

简介

切片 是一种数据结构,这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和缩小。切片的动态增长是通过内置函数 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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • // //Go语言切片 // /* // go语言切片是对数组的抽象 // Go 数组的长度不可改变,在特定场景中...
    JackieZhang阅读 927评论 0 0
  • 出处---Go编程语言 欢迎来到 Go 编程语言指南。本指南涵盖了该语言的大部分重要特性 Go 语言的交互式简介,...
    Tuberose阅读 18,770评论 1 46
  • 本文翻译自Andrew Gerrand的博文 https://blog.golang.org/go-slices-...
    大蟒传奇阅读 4,815评论 2 9
  • 在一个环境中,我有几个选择,每个选择都有很多
    健男三顺阅读 120评论 0 0
  • 我在迷途的花海 遇见了你 你说你喜欢芙蕖 要开出永生的美丽 照亮世俗的迷离 你是那样的美丽 天使都为你痴迷 没有人...
    江南少城主阅读 227评论 5 5

友情链接更多精彩内容