Go语言之slice特性

栏目: Go · 发布时间: 6年前

内容简介:golang的数据结构也很多,如List,array,map等,但是有个很特别的数据结构是slice,也叫切片。经常看到很多和数组的定义有关的操作是 make([]string, 10)。那么什么是slice呢?其实slice也算是golang语言特有的数据结构,底层是以数组作为支撑;啥概念呢,就是说在申请一块内存进行数组的存放的时候,slice就像数组对外开放的一扇窗口,让你看到想给你看到的内容。这个比喻还是有些贴切的,但是对于理解slice的内存存储和特性来说还远远不够,在学习一个语言特性的时候,我比较

1 slice介绍和说明

golang的数据结构也很多,如List,array,map等,但是有个很特别的数据结构是slice,也叫切片。经常看到很多和数组的定义有关的操作是 make([]string, 10)。那么什么是slice呢?

其实slice也算是golang语言特有的数据结构,底层是以数组作为支撑;啥概念呢,就是说在申请一块内存进行数组的存放的时候,slice就像数组对外开放的一扇窗口,让你看到想给你看到的内容。

这个比喻还是有些贴切的,但是对于理解slice的内存存储和特性来说还远远不够,在学习一个语言特性的时候,我比较推荐的学习方法是,实践一遍,看看例子,然后再根据自己碰到的问题场景,选择合适的解决方案。那么咱们来看例子和运行结果。

2 slice使用例子和特性

整数和字符串的slice操作例子和特性说明:定义,长度(len),和容量(cap)。

Go语言之slice特性

2.1 slice的定义和遍历以及属性

所以slice是依托于数组的,并且slice数据结构定义有几个基本属性:len(长度),cap(容量)。可以通过make进行初始化定义的时候制定len和cap: make([]type, len, cap)

从截图中代码和运行结果可以看出来,当前的slice定义中len和cap是一致的,但是slice有一个特点,当append一个新元素的时候len是增加了1,但是cap却不是。如下图:

Go语言之slice特性

2.2 slice的len和cap

一开始slice的长度len是3, 容量cap是5,然后通过append后,增加多于容量cap(初始值为5)的元素的时候,slice会重新进行空间分配,但是cap的空间是以第一次的容量cap为基准进行扩容的。

所以slice进行扩容的话,要特别注意,假如你第一个slice空间设置了1k,然后刚好满的时候,这个时候增加1个元素,会导致slice需要2倍的内存空间——2k。

多维slice

3 多维slices

多维slices其实就是多维数组的操作而已,看到例子截图,也比较灵活,对吧。

Go语言之slice特性

以上所述就是小编给大家介绍的《Go语言之slice特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

汇编语言(第2版)

汇编语言(第2版)

王爽 / 清华大学出版社 / 2008-4 / 33.00元

《汇编语言(第2版)》是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编语言,作者以循序渐进的思想精心创作了《汇编语言(第2版)》。《汇编语言(第2版)》具有如下特点:采用了全新的结构对课程的内容进行组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在......一起来看看 《汇编语言(第2版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具