为什么需要函数?
试想一下,如果有这么一个需求:在一个表格中,我们需要对数据进行一些操作,比如排序、过滤、分页等。
如果没有函数,我们可能需要在每个操作的地方重复编写相似的代码,这样不仅增加了代码量,还容易出错
函数的出现就是为了避免这种情况,它可以将一段代码封装起来,给它一个名字,当我们需要执行这段代码时,只需要调用这个函数即可。
一、基本概念
- 函数是为了实现特定功能的一段代码(语句或者指令的集合),可以被调用执行。
- 函数可以有参数和返回值,参数是函数执行所需的输入,返回值是函数执行后的输出结果。
- 函数的定义通常包括函数名、参数列表和函数体。
- 在 go 中,函数有:自定义函数、系统函数
二、函数的基本语法
func 函数名(形式参数列表)(返回值列表){
执行语句
return 返回值列表
}
- func:声明函数的关键字
- 形式参数列表:表示函数的输入
- 返回值列表:表示函数的输出(可以有输出也可以没有输出)
- 执行语句:完成功能的程序指令
三、代码演示
package main
import "fmt"
// 1、声明一个函数:用于计算 取模
func mod(n1 int, n2 int) int {
return n1 % n2
}
// 2、声明一个函数:用于计算两数之和 两数之差
// 如果有多个返回值,可以使用小括号将返回值包裹起来,形成一个返回值列表
func cal(n1 int, n2 int)(int, int) {
sum := n1 + n2
sub := n1 - n2
return (sum, sub)
}
// 3、声明一个函数:用于计算两数之积 两数相除
// 如果返回值较多,可以使用命名返回值,直接在函数定义时声明返回值的变量名,在函数体内给这些变量赋值,最后直接 return 即可
func cal(n1 int, n2 int)(res1 int, res2 int) {
res1 = n1 + n2
res2 = n1 - n2
return
}
func main() {
// 4、调用函数
// 调用函数时,需要传入实参,实参的类型和数量需要与函数定义时的形式参数列表一致
result := mod(10, 3)
fmt.Println("10 mod 3 =", result)
sum, sub := cal(10, 3)
fmt.Println("10 + 3 =", sum)
fmt.Println("10 - 3 =", sub)
res1, res2 := cal(10, 3)
fmt.Println("10 + 3 =", res1)
fmt.Println("10 - 3 =", res2)
}