首页 > 编程笔记 > Go语言笔记 阅读:13

Golang值传递和引用传递(附带实例)

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

在上述代码中,定义函数 myfunc(),将传入的参数值乘以 2 并输出。在主函数中定义变量 num,也就是要传递给函数的实际参数。调用函数 myfunc() 并输出实际参数 num 的值。

由运行结果可以看出,当改变形式参数的值时,实际参数的值不改变。

在默认情况下,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

由运行结果可以看出,在传递参数时使用引用传递,在函数中修改参数的值将影响实际参数。

相关文章