go的数组和切片初始化

Python013

go的数组和切片初始化,第1张

数组

数组是内置(build-in)类型,是一组同类型数据的集合。

数组的初始化有多种形式

长度为5的数组,其元素值依次为:1,2,3,4,5

长度为5的数组,其元素值依次为:1,2,0,0,0 。在初始化时没有指定初值的元素将会赋值为其元素类型int的默认值0,string的默认值是 ""

长度为5的数组,其长度是根据初始化时指定的元素个数决定的

长度为5的数组,key:value,其元素值依次为:0,0,1,2,3。在初始化时指定了2,3,4索引中对应的值:1,2,3

长度为5的数组,起元素值依次为:0,0,1,0,3。由于指定了最大索引4对应的值3,根据初始化的元素个数确定其长度为5

切片

数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型 Slices 切片

切片可以通过数组来初始化,也可以通过内置函数make()初始化。初始化时len=cap,在追加元素时如果容量cap不足时将按len的 2 倍扩容。

直接初始化切片, [] 表示是切片类型, {1,2,3} 初始化值依次是1,2,3.其cap=len=3

初始化切片s,是数组arr的引用

将arr中从下标startIndex到endIndex-1 下的元素 创建为一个新的切片

缺省endIndex时将表示一直到arr的最后一个元素

缺省startIndex时将表示从arr的第一个元素开始

通过切片s初始化切片s1

通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片

无论什么类型的数组,你的需求都是无法实现的。数组除了声明时可以总体操作初始化为某一特定序列外,以后都必须单个元素操作,因为它不是一个什么“类型变量”而是“相同类型变量”的集合。这一点在教科书讲到数组一节时都声明过。所以只有老老实实地一个元素一个元素地去解决……