Golang值传递和引用传递(附带实例)
Go语言程序中,调用函数时可以通过两种方式传递参数,一种是值传递,另一种是引用传递,本节分别介绍这两种方式。
实例如下:
由运行结果可以看出,当改变形式参数的值时,实际参数的值不改变。
在默认情况下,Go 语言使用的是值传递,即在调用函数的过程中不会影响实际参数。
Go语言值传递
值传递是指在调用函数时将实际参数复制并传递到函数中。值传递后,改变形式参数的值,实际参数的值不变。实例如下:
package main import "fmt" func myfunc(num int) { //定义 myfunc()函数 num = num * 2 fmt.Println("函数内:num =", num) } func main() { num := 5 //调用 myfunc()函数并传递参数 myfunc(num) fmt.Println("函数外:num =", num) }运行结果如下:
函数内:num = 10
函数外:num = 5
由运行结果可以看出,当改变形式参数的值时,实际参数的值不改变。
在默认情况下,Go 语言使用的是值传递,即在调用函数的过程中不会影响实际参数。
Go语言引用传递
引用传递是指在调用函数时将实际参数的地址传递到函数中。进行引用传递后,改变形式参数的值,实际参数的值也一同改变。代码如下:package main import "fmt" func myfunc(num *int) { //定义 myfunc()函数 *num = *num * 2 fmt.Println("函数内:num =", *num) } func main() { num := 5 //调用 myfunc()函数并传递参数 myfunc(&num) fmt.Println("函数外:num =", num) }运行结果如下:
函数内:num = 10
函数外:num = 10