Go 学习笔记——同构复合类型
一、数组的特性
定义:Go 语言的数组是一个长度固定的、由同构类型元素组成的连续序列
要点 1:var arr[N]T,T 为数组类型,N 为长度,其中 N 只能是整型或者常量表达式。
实际使用时,[N]可由[...]代替,go 编译器在编译时会自动识别数组长度
unsafe 包提供的 Sizeof 函数可以获得数组变量的大小,测试学习时,很有用
代码案例
复制代码
二、多维数组
定义:数组类型自身也可以作为数组元素的类型,这样就会产生多维数组
要点:数组类型是 Go 语言中最基础的复合数据类型。数组类型变量是一个整体,这就意味着一个数组变量表示的是整个数组。无论是参与迭代,还是作为实际参数传给一个函数 / 方法,Go 传递数组的方式都是纯粹的值拷贝,会带来较大的内存拷贝开销。为了避免这个问题,Go 提供了一种灵活的方式来解决——切片。这也是 Go 语言中最常用的同构复合类型
三、切片(slice)
初识:切片和数组很像,在变量的生命上,切片只是少了一个“长度”属性
复制代码
异同点
切片也可以通过 len 函数来获取长度,不同的是,切片支持动态添加元素,使用内置函数 append 可实现动态变化
复制代码
四、切片的实现原理
不记了,传送门:https://time.geekbang.org/column/article/444348
好了,今天就到这里,最近项目有些紧,笔记记得也不太好,关于原理性的阐述,我暂时就没有深入思考,等后续有时间再来完善。
版权声明: 本文为 InfoQ 作者【为自己带盐】的原创文章。
原文链接:【http://xie.infoq.cn/article/45c9c61612899928e0ec34471】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论