Go 语言函数值传递调用
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数
Go 语言默认使用值传递,即在调用过程中不会影响到实际参数
范例
我们先定义一个 swap()
函数用来交换两个变量的值
/* 定义相互交换值的函数 */ func swap(x, y int) int { var temp int temp = x /* 保存 x 的值 */ x = y /* 将 y 值赋给 x */ y = temp /* 将 temp 值赋给 y*/ return temp; }
接下来我们使用值传递调用刚刚定义的 swap()
函数
/** * file: main.go * author: 简单教程(www.twle.cn) * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ package main import "fmt" func main() { /* 定义局部变量 */ var a int = 13 var b int = 7 fmt.Printf("交换前 a 的值为 : %d\n", a ) fmt.Printf("交换前 b 的值为 : %d\n", b ) /* 通过调用函数来交换值 */ swap(a, b) fmt.Printf("交换后 a 的值 : %d\n", a ) fmt.Printf("交换后 b 的值 : %d\n", b ) } /* 定义相互交换值的函数 */ func swap(x, y int) int { var temp int temp = x /* 保存 x 的值 */ x = y /* 将 y 值赋给 x */ y = temp /* 将 temp 值赋给 y*/ return temp; }
编译运行以上 Go 语言范例,输出结果如下
$ go run main.go 交换前 a 的值为 : 13 交换前 b 的值为 : 7 交换后 a 的值 : 13 交换后 b 的值 : 7
我们会发现,我们原本设想 a 和 b 的值会互换,但实际上没有,这就是值传递的好处
如果想真正交换 a 和 b 的值,我们可以使用 引用传递