Go语言中的指针相对简单,所谓的简单是因为Go语言的指针并不能进行运算,比如说C语言中,获取一个指针之后可以进行加法计算。Go语言中指针可以指向a,也可以指向b但是并不能像C语言一样,通过加1来指向另一个变量。
Go语言的参数传递是值传递还是引用传递?
Go语言只有值传递一种方式
也就是参数在传递时,是以拷贝的形式传递的,修改传递的参数并不影响原来的参数。所以在需要修改原本的值的时候就需要通过指针实现引用传递
举个例子,在go语言中交换两个参数的值:
func swap(a, b *int) {
*a, *b = *b, *a
}
func main() {
a, b := 3, 4
swap(&a, &b)
println(a, b) // 4 3
}
当然这只是举例子,如果真要交换两个变量的值的话,下面这种方式会更简单:
func swap(a, b int) (int, int) {
return b, a
}
总结就是一句话!如果需要改变原来变量的值,那么需要传递指针!