go 函数
前言:
函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段,
可以提高应用的模块性和代码的重复利用率。
正文:
函数定义语法:
func 函数名(形式参数列表)(返回值列表){
函数体
}
函数定义示例1:
func getSum(a int, b int) int {
return a + b
}
调用:
res := getSum(1, 3)
fmt.Println(res)
函数定义示例2:可变参数,参数类型必须一致
func getSum(a ...int) int { //可变参数定义方式 name... type
sum := 0
//循环遍历
for _, v := range a { //多个参数的获取方式
sum += v
}
return sum
}
调用:
res := getSum(1, 3, 4) //这里参数可以写n多个,类型要一致
fmt.Println(res) //输出结果 8
函数定义示例3:确定参数 和可变参数
func getSum(a int, b ...int) int { //可变参数需要写到最后
sum := 0
//循环遍历
for _, v := range b { //获取可变参数
sum += v
}
return sum + a
}
调用:
res := getSum(100, 3, 4, 5) //可变参数传值
fmt.Println(res) //输出结果 8
函数定义示例4: 多个返回值
func getSum(a int, b int) (int, int) { //多个返回值需要加个括号
sum := a + b
sub := a - b
return sum, sub
}
调用:
res1, res2 := getSum(1, 3)
fmt.Println(res1, res2) //输出结果 4,-2
函数定义示例4: 返回值命名
返回值命名后,return 可以直接返回即可。返回值会自动赋值接收
func getSum(a, b int) (sum int, sub int) { //返回值直接命名
sum = a + b //这里也不需要 :=
sub = a - b
return //直接返回,不需要写参数
}
匿名函数的使用:
匿名函数是指不需要定义函数名的一种函数,
可以在函数里面定义匿名函数
匿名函数定义示例1:
匿名函数像变量一样,定义后必须使用
sum := func(a int, b int) int {
return a + b
}(10, 15)
fmt.Println(sum) //输出25
匿名函数定义示例2:函数中又包含匿名函数
func forSlice(s []string, f func(string)) {
for _, v1 := range s {
f(v1) //调用匿名函数
}
}
调用:
sli := []string{"lampol", "liudehua", "zhangxueyou"}
forSlice(sli, func(v string) { //调用forSlice函数
fmt.Println(v)
})
递归函数的使用:
递归函数指的是在函数内部调用函数自身的函数
注意:编写递归函数时,一定要有终止条件,否则就会无限调用下去,直到内存溢出。
递归实例1:内部在调用自身
// 实现5的阶乘。 5*4*3*2*1
func jc(num int) int {
if num <= 1 {
return 1
}
return num * jc(num-1)
}
调用:
i := 5
res := jc(i)
fmt.Println(res)
第一次调用: 5*jc(4)
第二次调用: 5*4*jc(3)
第三次调用: 5*4*3*jc(2)
第四次调用: 5*4*3*2*jc(1)
第五次调用:5*4*3*2*1 = 120
完结
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/17281405.html