go语言中的指针相比于C语言中的指针,简单了很多,Go语言中的指针不能参与运算,Go语言中不论是普通类型变量,还是指针类型变量,都是值传递,只不过一个值传递的拷贝一份的变量,另一个传递的是内存地址,下面,用简单的例子来解释下:
经典的交换两个数字
func swap1(a, b int) {
a, b = b, a
}
测试方法:
func main() {
a := 1
b := 2
swap1(a, b)
fmt.Println(a, b)
}
运行结果:
怎么才能达到交换两个数值的效果呢?这里采用指针可以将两个值真正的交换:
func swap2(a, b *int) {
*a, *b = *b, *a
}