一、函数:
- 函数:一段代码块
- 所有的流程控制代码和业务代码都只能写在函数内部
- 为什么使用函数
把一个功能提出组偶为一个函数便于后期维护,结构清晰
- 函数声明语法
函数声明后不会执行,必须调用后才会执行
fun 函数名(参数列表) 返回值{
//函数体
}
- 函数调用的语法
返回值 := 函数名(参数)
二、无参数无返回值函数
- 函数可以有参数,也可以没有参数,可以有返回值也可以没有返回值
func main() {
demo01()
}
func demo01() {
fmt.Println("执行demo01函数")
}
//上面代码等同于
//func main() {
// fmt.Println("执行demo01函数")
//}
三、有参数函数
- 函数的参数可以有多个,且每个参数类型都可以不同
- 参数表示调用函数方想要给函数内部传递的值,给函数使用
- 声明函数时的参数叫做形参,调用函数时参数叫做实参
func main() {
i := 5
s := "smallming"
show(s,i)
}
func show(name string,age int) {
fmt.Println("姓名:",name,"年龄:",age)
}
四、有返回值函数
- 函数的返回值是给调用方返回的数据,给调用方使用的
- 具有返回值的函数,必须要有return
五、多返回值函数
1、定义
- 在Go语言中每个函数声明时都可以定义成多返回值函数
- Go语言中所有的错误都是通过返回值返回的
- 声明多返回值函数的语法:
func 函数名(参数列表) (返回值,返回值) {
//函数体
}
- 调用函数的语法
变量,变量 := 函数名(参数)
- 调用函数时如果不想接收,可以使用下划线占位
变量,_ := 函数名(参数)
- 理论上函数返回值个数可以无限多个,但是一般不去定义多个返回值(用结构体代替多返回值)
2、代码演示
- 函数的返回值可以不接收,表示执行函数
- 函数的返回值如果接收,用于接收返回值的变量个数与返回值个数相同
- 不想接收的使用占位符(_)占位,一个下划线代表一个返回值
func main() {
//不接收函数返回值
demo()
//每个返回值都接收
a, b := demo()
fmt.Println(a, b) //输出:smallming 17
//不希望接收的返回值使用下划线占位,一个下划线只能代表一个返回值
c,_ := demo()
fmt.Println(c) //输出:smallming
}
func demo() (string, int) {
return "smallming",17
}
- 多返回值函数也可以给返回值定义变量,return后面就不需要编写内容
func main() {
a,b,c := demo()
fmt.Println(a,b,c) //smallming 17 xiamen
}
func demo() (name string, age int, addr string) {
fmt.Println("执行了demo")
name = "smallming"
age = 17
addr = "xiamen"
return name,age,addr
}
等效于
func main() {
a,b,c := demo()
fmt.Println(a,b,c) //smallming 17 xiamen
}
func demo() (name string, age int, addr string) {
fmt.Println("执行了demo")
name = "smallming"
age = 17
addr = "xiamen"
return //可省略具体返回值
}