Go语言之函数
函数这种语法元素的诞生,源于将大问题分解为若干小任务与代码复用;函数是唯一一种基于特定输入,实现特定任务并可返回任务执行结果的代码块。
1.函数定义
// func:函数由 func 开始声明
// function_name:函数名:唯一,首字母大写可以在包外引用,小写则包内可见
// parameter list:参数列表,可有可无,可少可多,逗号分隔
// return_types: 返回值的类型定义,可省可多,多个返回值需要用括号包裹,逗号分隔
func function_name( [parameter list] ) [return_types] {
函数体
}
(1)函数参数
参数可以不传,参数也可以传递多个,也可以参数数量不固定
函数的参数一般称为形参,而实际调用时使用的参数称为实参
函数参数的传递采用的是值传递的方式
值传递就是将实际参数在内存中的表示逐位拷贝(Bitwise Copy)到形式参数中
- 1.自身传递:代表类型有整型,数组,结构体,拷贝自身数据内容
- 2.引用传递:代表类型有string,slice,map,不拷贝实际数据内容而拷贝自身地址,故开销固定,称之为浅拷贝
// 不传参数
func num() (int, int) {
return 10, 20
}
// 传多个参数
func nums(a, b int) (int, int) {
return b, a
}
// 不固定参数 只能写在最后
func nums(a int, x ...int) (int, int) {
return x[0], x[1]
}
(2)函数返回值
返回值可以没有,可以是一个,也可以是多个
// 无返回值
func num(x, y int) {
}
// 多返回值
func nums(x, y int) (int, int, string) {
return x, y, ""
}
// 具名返回值 相当于局部变量 return隐式返回
func nums2(x, y int) (a int, b int, c string) {
a = 10
b = 20
c = "hehe"
return
}
2.高阶函数
(1)函数可以作为数据类型
func