随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

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

 

完结

posted @ 2023-04-02 21:17  yangphp  阅读(30)  评论(0编辑  收藏  举报