golang-函数

1.定义函数

  定义函数先想好输入和输出 ,一个函数最好做一件事情并把事情做好 ,通过大量简短的函数实现整体

  函数签名处指定好输入的参数类型和输出返回值的类型(不写可以不返回)

  函数可以有多个返回值 ,多个返回值需要括号括起来

  函数可以接受任意数量的参数 ,但是类型必须一致 ,可以使用切片收集 ,在函数参数位置定义一个切片 ,在函数内部循环切片

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func Loop(sli ...string) (string, int) {
 8     fmt.Println(sli)
 9     for _, i := range sli {
10         fmt.Printf("is %v\n", i)
11 
12     }
13     return "OK", 1
14 }
15 
16 func main() {
17     a, b := Loop("A", "B", "C", "D", "E")
18     fmt.Println(a, b)
19 }
View Code

2.具名函数

  可提升函数的可读性 ,但是不利于维护 ,不建议使用

  将签名处声明函数的返回值 ,返回裸return语句

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func Loop(sli ...string) (a,b string) {
 8     fmt.Println(sli)
 9     for _, i := range sli {
10         fmt.Printf("is %v\n", i)
11     }
12     a,b = "C","D"
13     return
14 }
15 
16 func main() {
17     a, b := Loop("A", "B", "C", "D", "E")
18     fmt.Println(a, b)
19 }
View Code

3.递归函数

  通过不断的调用自身 ,直到满足特定的条件位置

  实现递归就是在return终止语句的时候执行自身 (满足某些条件开始执行自己)

 1 package main
 2 
 3 import "fmt"
 4 
 5 func recursion(x, y int) int {
 6     if x+y < 100 {
 7         x++
 8         y++
 9         fmt.Println("还不够")
10         return recursion(x, y)
11     }
12     return x + y
13 }
14 
15 func main() {
16     fmt.Println(recursion(1, 2))
17 }
View Code

4.函数作为值传递

  go提供了函数式编程 ,可以将函数作为参数传递给其他函数 ,通过存储函数的变量加括号执行

  函数要传入函数类型参数 ,需要在参数中指定函数的签名 

 1 package main
 2 
 3 import "fmt"
 4 
 5 func inter(f1 func(x int) int, f2 func(y int) int, x int, y int) int { //inter函数参数是规定了传入函数的签名
 6     return f1(x) + f2(y)
 7 }
 8 
 9 func main() {
10     a := func(x int) int {
11         return x
12     }
13     b := func(y int) int {
14         return y
15     }
16     fmt.Println(inter(a, b, 3, 4))
17 }
View Code

 

posted @ 2019-10-27 18:51  屈冠文  阅读(164)  评论(0编辑  收藏  举报