内容正文:
千锋教育
Go语言开发实战
教学设计
课程名称: Go语言开发实战
授课年级: ______ ______________ ___
授课学期: ___ ____ ________ ________
教师姓名: ______________ ________
2019年09月01日
课程名称
第4章 Go语言的函数与指针
计划学时
4学时
内容分析
本章主要介绍函数、指针、函数的参数传递
教学目标
与
教学要求
要求学生掌握函数的使用,掌握变量作用域,掌握匿名函数,掌握闭包,掌握指针,掌握函数参数传递(值传递与引用传递)。
教学重点
函数、指针、函数的参数传递
教学难点
函数、指针、函数的参数传递
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(函数)
回顾内容,引出本课时主题
1.回顾内容,引出本课时的主题
上节已经学习了Go语言的流程控制的相关内容。随着编程经验的提高,很多同学常常会发现自己写的代码有很多重复,一旦决定要更新代码,就必须将每个重复的部分修改,费时费力。因此,大家希望可以避免代码的重复,本节内容可以帮助读者消除重复,使程序更短、更易读、更容易更新。
很久以前的人们想要制作果汁,每次都用手捏,非常麻烦,后来有人发明了榨汁机,人们只要把水果放进去,榨汁机就会把果汁榨出来。函数的功能就像榨汁机一样,帮助人们重复的做任务。函数是组织好的、可重复使用的执行特定任务的代码块。它可以提高应用程序的模块性和代码的重复利用率。Go语言从设计上对函数进行了优化和改进,让函数使用起来更加方便。因为Go语言的函数本身可以作为值进行传递,既支持匿名函数和闭包又能满足接口,所以Go语言的函数属于一等公民。
2.明确学习目标
(1) 能够掌握函数声明
(2) 能够掌握变量作用域
(3) 能够掌握函数变量(函数作为值)
(4) 能够掌握匿名函数
(5) 能够掌握闭包
(6) 能够掌握可变参数
(7) 能够掌握递归函数
知识讲解
· 函数声明
普通函数需要先声明才能调用,一个函数的声明包括参数和函数名等。编译器通过声明才能了解函数应该怎样在调用代码和函数体之间传入参数和返回参数。语法格式如下所示。
func 函数名(参数列表)(返回参数列表){
//函数体
}
func funcName (parametername type1, parametername type2...) (output1 type1, output2 type2...) {
//逻辑代码
//返回多个值
return value1, value2...
}
1. 函数定义解析
func:函数关键字。函数由 func 开始声明。
funcName:函数名。函数名和参数列表一起构成了函数签名。函数名由字母、数字和下画线组成。函数名的第一个字母不能为数字。在同一个包内,函数不能重名。
parametername type:参数列表。定义函数时的参数叫作形式参数,形参变量是函数的局部变量;函数被调用时,可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序及参数个数。参数是可选的,也就是说函数可以不包含参数。
output1 type1, output2 type2:返回值列表。返回值返回函数的结果,结束函数的执行。Go语言的函数可以返回多个值。返回值可以是返回数据的数据类型,也可以是变量名+变量类型的组合。函数声明时有返回值,必须在函数体中使用return语句提供返回值列表。如果只有一个返回值并且没有声明返回值变量,那么可以省略包括返回值的括号。return后的数据,要保持和声明的返回值类型、数量、顺序一致。如果函数没有声明返回值,函数中也可以使用return关键字,用于强制结束函数。
函数体:函数定义的代码集合,是能够被重复调用的代码片段。
2. 参数类型简写
在参数列表中,如果有多个参数变量,则以逗号分隔;如果相邻变量是同类型,则可以将类型省略。语法格式如下所示。
func add (a , b int) {}
Go语言的函数支持可变参数。接受变参的函数是有着不定数量的参数的。语法格式如下所示。
func myfunc(arg ...int) {}
arg ...int告诉Go这个函数接受不定数量的参数。注意,这些参数的类型全部是int。在函数体中,变量arg是一个int的slice(切片)。
· 变量作用域
作用域是变量、常量、类型、函数的作用范围。
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,生命周期同所在的函数。参数和返回值变量也是局部变量。
在函数体外声明的变量称之为全