Go 语言 - 指针作为函数参数
Go 语言允许向函数传递指针
向函数传递指针只需要在函数定义是将参数上设置为指针类型即可
例如下面的函数 swap
的 2 个形参就是指针类型
func swap(x *int, y *int) { var temp int temp = *x /* 保存 x 地址的值 */ *x = *y /* 将 y 赋值给 x */ *y = temp /* 将 temp 赋值给 y */ }
范例
下面的范例演示了如何向函数传递指针,并在函数内部修改指针变量的值
/** * 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 ) /* 调用函数用于交换值 * &a 指向 a 变量的地址 * &b 指向 b 变量的地址 */ swap(&a, &b); fmt.Printf("交换后 a 的值 : %d\n", a ) fmt.Printf("交换后 b 的值 : %d\n", b ) } func swap(x *int, y *int) { var temp int temp = *x /* 保存 x 地址的值 */ *x = *y /* 将 y 赋值给 x */ *y = temp /* 将 temp 赋值给 y */ }
编译运行以上 Go 语言范例,输出结果如下
$ go run main.go 交换前 a 的值 : 13 交换前 b 的值 : 7 交换后 a 的值 : 7 交换后 b 的值 : 13