go语言基础2|青训营笔记

60 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第4天。

6)多维数组

多维数组声明:

声明方式:

var variable_name [size1][size2] ...[sizen] variable_type

三维的整型数组:

例:var threedim[5][10][4]int

2、二维数组

二维数组是最简单的多维数组,二维数组本质上是由一维数组组成的。二维数组定义方式如下:

var arrayName [ x ][ y ] variable_type 

初始化二维数组

a := [3][4]int{  
 {0, 1, 2, 3} ,   //  第一行索引为 0 
 {4, 5, 6, 7} ,   // 第二行索引为 1 
 {8, 9, 10, 11},   //第三行索引为 2 
}

以上代码中倒数第二行的 } 必须要有逗号,因为最后一行的 } 不能单独一行,也可以写成这样:

a := [3][4]int{  
 {0, 1, 2, 3} , 
 {4, 5, 6, 7} , 
 {8, 9, 10, 11}} 

访问二维数组

二维数组通过指定坐标来访问。如数组中的行索引与列索引,有两种方式表示,例如:

val := a[2][3]   
var value int = a[2][3]

7)切片

定义

切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型),这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。

Go语言中切片的内部结构包含地址、大小和容量,切片一般用于快速地操作一块数据集合,如果将数据集合比作切糕的话,切片就是你要的“那一块”,切的过程包含从哪里开始(切片的起始位置)及切多大(切片的大小),容量可以理解为装切片的口袋大小。

从数组或切片生成新的切片:

切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。从连续内存区域生成切片是常见的操作,格式如下:

// slice:表示目标切片对象

// 开始位置:对应目标切片对象的索引

// 结束位置:对应目标切片的结束索引

slice [开始位置 : 结束位置]