「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」。
0 环境
- 系统环境:win10
- 编辑器:vscode
- go版本:gol.17.3
1 导图
2 前言
集合类型一开始学到根据数据类型,我就在操心这个问题,基本类型
3 数组(Array)
go入门指南是这么描述的,数组是具有相同 唯一类型 的一组已编号且长度固定的数据项序列(这是一种同构的数据结构)。 理解起来就是定义一个数组必须有固定长度(长度 > -1)、数据是类型相同的,而且数组里的元素是连续的(有编号的)。对于每项数据类型是没有限制,可以是整型、字符串或者自定义,但要保证每项类型都一样即可。
比如我现在长度不太确定,总不能自己一个个元素数吧,Go语言会根据大括号{}中元素的个数自动推导出来它的长度。如下:[...]{}代替。弱弱的吐槽一点,现在我才习惯[]string{}这样式的写法。
1 数组循环
这样的for循环还是有点麻烦,可以用for range。使用for range会有i,v,它代表数组的索引和数组的值。
假如我不想要数组索引的值,可以用_把i丢弃,或者是忽略它。
4 切片
切片是一个引用类型,对于我们情感认知来说,相对于数组的死板,切片更加的灵活,它是长度可变的数组。但是切片和数组到底有啥质的区别呢?我的理解是:数组只能循环一个个读,而切片呢,既可以一个个读,也可以一次性读一片区间。 说白了,切片虽然基于索引,但是它索引范围变大了。
1 基于数组的切片
读取到数组索引2的值,索引3的值没有读取。由此可见,可以看作左[右),
slice := [start:end)
5 小结
我们认识了,数组是有长度的,且元素类型唯一,对于长度,go语言根据元素个数,自动推导获取长度,
[...]{},for range简化数组的循环,当想忽略索引值,或元素值,用_。对于切片,它基于数组(也是用索引获取),而不同于数组(索引范围更广)。