天天看点

Go语言学习心得--Go语言的函数(二)

之前说过Go语言的函数了,这次剖析一下这个Go的函数参数

函数如果使用参数,该变量可称为函数的形参。

形参就像定义在函数体内的局部变量。

调用函数,可以通过两种方式来传递参数:

第一种是值传递:

所谓的值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

第二种是引用传递:

而引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

我们可以写个Demo来测试一下这个值传递

Go语言学习心得--Go语言的函数(二)

Demo运行结果如下

Go语言学习心得--Go语言的函数(二)

程序中使用的是值传递, 所以两个值并没有实现交互,我们可以使用 引用传递 来实现交换效果。

Go 语言函数引用传递值

引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

写个测试搞一下试试

Go语言学习心得--Go语言的函数(二)

看,这次传递值就过去了

Go语言学习心得--Go语言的函数(二)
默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。
           

还有就是 函数定义后可作为值来使用

Go 语言可以很灵活的创建函数,并作为值使用。以下实例中我们在定义的函数中初始化一个变量,该函数仅仅是为了使用内置函数 math.sqrt()

Demo实例

Go语言学习心得--Go语言的函数(二)

Demo结果

Go语言学习心得--Go语言的函数(二)

sqrt() 这个方法就是和JAVA中类似的那个 求平方根的那个

而且Go语言同时也是支持匿名函数的,和JAVA中的匿名方法似的。

Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。

以下实例中,我们创建了函数 getSequence() ,返回另外一个函数。该函数的目的是在闭包中递增 i 变量,

Go语言学习心得--Go语言的函数(二)

看执行结果

Go语言学习心得--Go语言的函数(二)

接下来我们在看看 Go 语言函数方法

Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。

语法格式如下:

func (variable_name variable_data_type) function_name() [return_type]{
   /* 函数体*/
}
           

下面我们用一个Demo来演示一下

Go语言学习心得--Go语言的函数(二)

执行结果演示

Go语言学习心得--Go语言的函数(二)