Go语言学习(四):数组和切片

对列表进行多个的值排序可以使用 array, 或者使用更加灵活的 slice。字典或哈希类型同样可以使用过,在Go中叫做 map。

Var arr [10]int 这样的数组类型是固定大小的,而大小是类型的一部分,因此不能改变大小。

数组同样是值类型,所以将一个数组赋值给另一个数组,会复制所有的元素。尤其是当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针,乃浅复制。

1、数组的定义和遍历:

range 是一个迭代器,迭代是一种重复反馈过程的活动,而range 每次活动都将反馈出一个键值对。当其对slice 或 array做循环的时候,range 将返回索引序号作为"键",序号对应的内容作为值。

题外话: map呢是一种无序的键值对集合,不过他可以将字符串作为,且绝大部分的内容都能作为值。所以我们也可以迭代它,但没办法获取它的内容顺序,因为它是用hash表来实现的。

序号对应

slice 与 array接近,但是在新的元素加入时可以增加长度。slice 总是指向底层的一个array。slice 是一个指向 array的指针,这是其与 array不同的地方。切片实际的是获取数组的某一部分,len切片<=cap切片<=len数组,切片由三部分组成:指向底层数组的指针、len、cap。

slice 是引用类型,这意味着放赋值某个slice 到另一个变量,两个引用都会指向同一个array 。

1、切片的定义和操作:

函数append 向slice 追加值后,会返回追加后的新的,与slice 有相同类型的slice。如果slice 没有足够的容量存储追加的值,append 将会分配一个足够大的、新的slice 来存放原来slice 的元素和追加的值。因此呢,返回的slice 可能指向不同的底层array。

你可能感兴趣的:(Go语言学习(四):数组和切片)