内容正文:
千锋教育
Go语言开发实战
教学设计
课程名称: Go语言开发实战
授课年级: ______ ______________ ___
授课学期: ___ ____ ________ ________
教师姓名: ______________ ________
2019年09月01日
课程名称
第5章 Go语言的内置容器
计划学时
4学时
内容分析
本章主要介绍数组、切片、map
教学目标
与
教学要求
要求学生掌握数组的用法,掌握切片的用法,掌握map的用法。
教学重点
数组、切片、map
教学难点
数组、切片、map
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(数组、切片)
回顾内容,引出本课时主题
1.回顾内容,引出本课时的主题
上节已经学习了Go语言的函数与指针。在日常生活中有这样的场景,超市批量运输酒水,搬运工通常不会一瓶一瓶的搬,他们会将瓶子放到箱子里一起搬,这样省时省力。在Go语言中也有这样的“箱子”,就是内置容器,开发者可以将变量放在容器里一起操作。本节将开始介绍Go语言数组和切片的相关知识。
2.明确学习目标
(1) 能够理解数组的概念
(2) 能够掌握数组的语法和数组的长度
(3) 能够掌握遍历数组
(4) 能够理解多维数组
(5) 能够理解数组是值类型
(6) 能够理解切片的概念和切片的语法
(7) 能够掌握len()和cap()函数
知识讲解
· 数组的概念
数组是相同类型的一组数据构成的长度固定的序列,其中数据类型包含了基本数据类型、复合数据类型和自定义类型。数组中的每一项被称为数组的元素。数组名是数组的唯一标识符, 数组的每一个元素都是没有名字的,只能通过索引下标(位置)进行访问。因为数组的内存是一段连续的存储区域,所以数组的检索速度是非常快的,但是数组也有一定的缺陷,就是定义后长度不能更改。
· 数组的语法
Go 语言数组声明需要指定元素类型及元素个数,语法格式如下。
var 变量名 [数组长度] 数据类型
以上为一维数组的定义方式,数组长度必须是整数且大于 0,未初始化的数组不是nil,也就是说没有空数组(与切片不同)。
初始化数组语法格式如下。
var nums = [5]int{1 , 2 , 3 , 4 , 5 }
初始化数组中 {} 中的元素个数不能大于 [] 中的数字。
如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小。可以忽略声明中数组的长度并将其替换为…。编译器会自动计算长度。语法格式如下。
var nums = [...]int{1 , 2 , 3 , 4 ,5 }
以上两种初始化方式相同,虽然第二种没有设置数组的大小。
修改数组内容,语法格式如下。
nums[4] = 4
以上实例读取数组第5个元素。数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。
· 数组的长度
数组的长度是该数组类型的一个内置常量,通过将数组作为参数传递给len()函数,可以获得数组的长度。忽略声明中数组的长度并将其替换为“…”,编译器可以找到长度。
· 遍历数组
在数组中查找目标元素,需要进行遍历,在Go语言中数组的遍历方式参见教材例5-2。
· 多维数组
由于数据的复杂程度不一样,数组可能有多个下标。一般将数组元素下标的个数称为维数,根据维数,可将数组分为一维数组、二维数组、三维数组、四维数组等。二维及以上的数组可称为多维数组。
Go 语言的多维数组声明方式:
var variable_name [SIZE1][SIZE2]...[SIZEn] variable_type
1. 二维数组
在实际的工作中,仅仅使用一维数组是远远不够的,例如,一个学习小组有10个人,每个人有三门课的考试成绩,如果使用一维数组解决是很麻烦的。这时,可以使用二维数组。
二维数组是最简单的多维数组,二维数组的本质也是一个一维数组,只是数组成员,由基本数据类型变成了构造数据类型(一维数组)。
二维数组的定义方式如下。
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 */
}
在上述定义的二维数组中,共包含3*4个元素,即12个元素。接下来,通过一张图来描述二维数组a的元素分布情况,如图5.3所示。
二维数组通过指定坐