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

查看所有标签

猜你喜欢:

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

CSS权威指南(第三版·英文影印版)

CSS权威指南(第三版·英文影印版)

[美] Eric A.Meyer / 东南大学出版社 / 2007-06 / 68.00元

著名的CSS专家Eric A.Meyer他招牌式的智慧和无与伦比的经验引领读者探索了CSS的各个部 分,包括属性、标记、特性和实现。此外,他还就现实应用中的一些问题,例如浏览器的支持和设计方针,发表了看法。你所要知道的就是HTML 4.0的知识,这样就可以创建整洁、易于维护的脚本,以与桌面出版系统同样的优雅和控制能力管理网站布局和分页。你将会学到: 精妙地设计文本风格 用户界面、......一起来看看 《CSS权威指南(第三版·英文影印版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具