将参数传递给函数的按值调用方法会将参数的实际值复制到函数的参数中。在这种情况下,对函数内部参数的更改不会影响参数。
默认情况下,Go编程语言使用按值调用方法传递参数,通常,这意味着函数内的代码无法更改用于调用函数的参数,考虑如下函数 swap()的定义。
/* 交换值的函数定义 */ func swap(int x, int y) int { var temp inttemp=x /* 将x值保存在temp变量中 / x=y / 将y值保存在x中 / y=temp / 将tmp变量值写入y中 */
return temp; }
现在,让我们通过传递实际值来调用函数 swap(),如以下示例所示-
package mainimport "fmt"
func main() { /* 局部变量定义 */ var a int=100 var b int=200
fmt.Printf("Before swap, value of a : %d\n", a ) fmt.Printf("Before swap, value of b : %d\n", b )
/* 调用函数来交换值 */ swap(a, b)
fmt.Printf("After swap, value of a : %d\n", a ) fmt.Printf("After swap, value of 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; }
将上面的代码放在单个C文件中,然后编译并执行它。它将产生以下输出-
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200
它表明,尽管在函数内部对其进行了更改,但这些值没有任何变化。