Go语言之slice特性

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

内容简介: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特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

瞬间之美

瞬间之美

[美] Robert Hoekman, Jr. / 向怡宁 / 人民邮电出版社 / 2009-7 / 45.00元

本书特色: 本书通过重现用户面对Web应用时由始至终的完整情境,主要针对Web应用中几乎所有相关元素,例如Search、Screencast、Blog 、Wizard、 RSS、 Rate 、TagCloud 以及Form的布局、交互甚至客服等都提出了值得借鉴的解决方案。具体通过30多个故事轻松自然地带领读者领会设计者如何百分之百地用心传达以创造美好的用户体验。 本书适用于信息架构设计......一起来看看 《瞬间之美》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具