Go语言基础之数据容器 | 青训营笔记

87 阅读2分钟

Go语言有多种数据容器,包括一些基础的容器如数组(Array),切片(Slice),映射(Map),高级容器(需要import container包)的堆(Heap),栈(Stack),双向链表(List),环形链表(Ring),哈希表(Hash)以及还有自定义的结构体(Struct)等。具体定义和用法上过数据结构的同学应该都懂。

Array

数组是最基础的数据容器。数组是定长的,可以在创建时指定长度,无法在运行时修改。支持下标索引。声明的常用格式为:

var arrName [num][...] arrType 

注意二维数组的初始化可以用“index:”的方式定义到指定位置,比如:

// 声明并初始化数组中索引为 13 的元素
array = [4][2]int{1: {20, 21}, 3: {40, 41}}
// 声明并初始化数组中指定的元素
array = [4][2]int{1: {0: 20}, 3: {1: 41}}

Slice

切片可以简单地理解为动态数组,其长度可变,并可由另一个切片或数组创建。 切片是一个引用类型,指向底层的数组。我们常用一组起始索引和终止索引的值来创建切片,但是要注意这组值是左闭右开的,也就是说不包括终止索引所对应的值。

var s=[3] int {1,2,3}   //s={1,2,3}
s2 = s[1:3] //s2={1,2}

Map

map是无序键值对,不支持下标索引,可以使用键值索引,具体使用方法和c++,python等语言中的map没有太大差别,这里不做说明。

其他容器

其他的容器中,队列(Queue)和堆栈(Stack)一般用切片或者列表来实现。高级容器在container包中有封装好的类,可以直接使用。

另外,可以用make语句创建各种容器,append向数组和切片等中添加元素。