go函数特点
函数是模块化、可复用、用于实现单一或相关联功能的代码块,用于执行一个任务。go函数具有以下特点:
- go工程至少有一个main()函数
- go语言通过函数来划分不同逻辑功能,每个函数执行指定任务
- go语言标准库提供了多种内置函数。例如,len()函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度;如果传入的是数组,则返回数组中包含的元素个数
在go语言中,函数是一等公民(first-class),也即:
- go函数可以作为值,进行传递
- go函数支持匿名函数和闭包(closure)
- go函数满足接口
函数声明
函数必须先声明才能调用。函数声明包括go函数名、参数列表,返回值列表、函数体。编译器通过函数声明知道应该如何在调用代码和函数体之间传递参数和返回值。格式如下:
func function_name( [parameter_list type] ) ([return_parameter type]) {
函数体
}
- func:关键字,函数声明由func开始
- function_name:函数名由字母、数字、下滑线组成。其中,函数名首字符不能是数字。在一个包内,函数不能重名
- parameter_list type:参数列表和参数类型。一个参数由参数变量和参数类型组成,如func foo (a int, b string),参数列表中的变量作为函数的局部变量而存在。
参数就像一个占位符(形参),当函数被调用时,你可以将值传递给参数,这个值被称为实际参数
。参数是可选的,也就是说函数也可以不包含参数 - return_parameter type:返回值列表和参数类型。函数声明中有返回值时,必须在函数体中使用return语句提供返回值。有些函数不需要返回值,这种情况下([return_parameter type])不是必须的
- 函数体:可被重复调用的代码段
- 参数类型简写
在参数列表中,如果有多个参数变量,则以逗号分隔;如果相邻变量是同类型,则省略类型。
// 定义一个函数,返回两个数的最大值
func max(num1, num2 int) int {
// 声明局部变量
var result int
if (num1 > num2) {
result = num1
} else {
result = num2 // <时,去num2;=时,num1和num2可以任取一个
}
return result
}