您现在的位置是:首页 > 技术笔记 > Go语言Go语言

函数

冰山2019-01-25【Go语言】人已围观

简介1.函数
1.1函数定义
1.2函数基本语法
1.3普通参数列表
1.4不定参数列表
2.函数嵌套调用
2.1 基本函数嵌套调用
2.2函数返回值
2.3返回多个值
3.函数类型
4.函数作用域
4.1局部变量、全局变量
5.匿名函数与闭包
5.1匿名函数
5.2闭包
5.3递归函数

 

1.函数

 

1.1函数定义


函数就是将一堆代码进行重用的一种机制,函数就是一段代码,一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们,要求的数据就叫参数,返回的执行结果就是返回值。
 

1.2函数基本语法


func 函数名(){
函数体
}

通过func关键字来定义函数,函数名后面必须加括号
 

1.3普通参数列表


我们将给函数提供的这些数据称为参数,那么我们自己定义的函数是否可以有参数呢?

完全可以,下面我们就看一下怎样给自己定义的函数提供参数,给函数传递参数分为两种情况:第一种情况为普通参数列表,第二种情况为不定参数列表。
 

func Test(a int,b,int){
 fmt.Println(“a=%d,b=%d”,a,b)
}
func main(){
  Test(3,5)
}

首先我们定义了一个Test()函数,该函数有两个参数,a,和b .并且这两个参数的类型都是整型的(这两个参数我们称之为形参),在调用Test()函数时,我们将3传递给参数a,将5传递给参数b(在调用时输入的3和5这个参数我们称之为实参)。把这个过程称为参数的传递,并且在Test()函数中输出两个变量的值。
 

1.4不定参数列表


根据前面的笔记,我们了解了,在定义函数的时候根据需求指定参数的个数和类型,但是有时候如果无法确定参数的个数呢?

举例说明:上一小节我们写过一个求两个整数之和的函数,但是平常也会经常遇到这样的情况,就是你想写一个函数,实现整数的和。

在这个要求中,你并不知道到底是有几个整数,那么我们应该怎样确定该函数的参数呢?这时候,就要用“不定参数列表”来解决这个问题。那么我们可以通过如下的方式来定义函数:
 

func Test(args  ...int){
         for i:=0;i<len(arg);i++{
            fmt.Println(arg[i])
         }
}
func main(){
    Test(1)
    Test(2,3)
    Test(3,4,5)
}

Test()函数的参数名字叫args(参数的名字可以随便起),类型是整型的。但是,这里一定要注意,在args后面跟了三个点,就是表示该参数可以接收0或多个整数值。

所以,args这个参数我们可以想象成是一个集合(类似数学中集合),可以存放多个值。

所以,在Test()函数内,我们通过以前学习的一个函数叫len(),来计算出args这个集合中存储了多少个数(如果args这个集合中存储了5个数,那么len()函数的值就是5,通过for循环将该集合中的数全部输出,在输出时我们通过下标的方式将args集合中的值输出的。所谓的下标,我们可以理解成就是一个编号,对存储在args这个集合中每个数字都加上了编号。在这里要注意的是:下标是从0开始计算的。如下图所示:



args集合中存储了5,6,7三个数,对应的下标(编号),分别是0,1,2. 如果该集合中存储了4个数,那么第4个数的编号就是3。

现在取出第一个数就是args[0]值为5,第二个数args[1]值为6,以此类推。
 
在main()函数中,我们分别调用了三次Test()函数,在第一次调用时,我们只传递了一个参数1,那么形参args中也就只有1,所以只循环了一次就将该值输出。第二次调用时,传递了两个参数,循环两次输出,第三次调用,传递了三个参数,循环了三次输出。
 
在Test()函数中,我们除了使用len()函数,计算出集合中存储的数据的个数,然后再输出以外,还有另外一种输出的方式就是使用range关键字。如下所示:
 

func Test(args  ...int){
      for i,data:=range args{
        fmt.Println(“编号为:”,i)
        fmt.Println(“值为:”,data)
       }
}

 range会从集合中返回两个数,第一个是对应的坐标,赋值给了变量i,第二个就是对应的值,赋值了变量data,所以以上两种输出集合的方式,在开发过程中都可以使用。

 1/5    1 2 3 4 5 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:流程控制

下一篇:数据格式

文章评论

本站推荐