常量和变量都是数据的一种载体,数据通过不同的运算符参与运算时,对计算的流程进行一定程度的控制便是流程控制,并且低于较多的数据通过内置容器进行存储,那么之后要干嘛呢?就是通过以上的所有概念进行整合,将其抽象到一个模块中去完成某一功能,这便是本篇的主题——函数。
函数,并不是一个新概念,在不同语言中都能听到函数这个名词,那么在Go语言中函数又该如何使用呢?它到底与其他语言又有哪些差异呢?
1、函数定义func
func 函数名(参数列表) (返回参数列表) {
函数体
}
定义解析:
funcfunc
根据函数参数情况可分为三类,接下来展开具体说明。
- 固定参数
- 可变参数
- 固定参数和可变参数
1.1 固定参数的函数定义
函数定义格式如下:
func 函数名(参数列表) (返回参数列表) {
函数体
}
例如,两数相乘:
func multipleForTowNum(num1 int, num2 int) int {
result := num1 * num2
return result
}
1.2 可变参数的函数定义
Go 语言中还支持另外一种可变参数的函数,其函数定义格式如下:
func 函数名(v...T) (返回参数列表) {
函数体
}
v...TvT
例如,实现多数相乘:
func multipleForNums(nums ...int) int {
var result int = 1
for _, num := range nums {
result = result * num
}
return result
}
numsint
1.3 固定参数和可变参数的函数定义
上面介绍了固定参数、可变参数的定义,如果存在固定参数和可变参数共存的情况,该如何定义呢?
其格式如下:
func 函数名(固定参数列表, v...T) (返回参数列表) {
函数体
}
例如,在两数相加基础上,再进行多数的相乘:
func multipleForTowNums(num1 int, num2 int, nums ...int) int {
result := num1 + num2
for _, num := range nums {
result = result * num
}
return result
}
2、函数分类
函数从大的方面分类两类:自定义函数、内置函数。
2.1 自定义函数
func
2.2 内置函数
lenappend
makechannellenmapchannelcapchanneldeletemapappendcopynewmapchannelcomplexrealimagprintprintlnclosechannelpanicrecoverpanic
3、函数返回值
在1、函数定义中我们知道函数在使用调用时,通常会给调用者返回一个结果,这个结果被称为函数的返回值。
一个函数可以没有返回值,也可以有一个或多个返回值。
3.1 多返回值
例如,将两个数进行交换,并返回交换后的两数:
func swap(x, y string) (string, string) {
return y, x
}
3.2 空白标识符
_
swap
package main
import "fmt"
func main() {
x, _ := swap(1, 5)
fmt.Println(x) // 输出:5
}
func swap(x, y int) (int, int) {
return y, x
}
4、函数使用
接下来,以一个简单示例来说明如何正确的使用函数。
max
package main
import "fmt"
func main() {
fmt.Print(max(10, 7))
}
// 获取两数的最大值
func max(num1, num2 int) int {
if num1 > num2 {
return num1
} else {
return num2
}
}