package main import "fmt" func swap(a, b *int) { b, a = a, b } func main() { x, y := 1, 2 swap(&x, &y) fmt.Println(x, y) }
这里可以理解成值传递吗 , 把值拷贝一份传到函数里,函数里怎么修改拷贝的都不会应该到原本的值?
有疑问加站长微信联系(非本文作者)

package main import "fmt" func swap(a, b *int) { b, a = a, b } func main() { x, y := 1, 2 swap(&x, &y) fmt.Println(x, y) }
这里可以理解成值传递吗 , 把值拷贝一份传到函数里,函数里怎么修改拷贝的都不会应该到原本的值?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
go的指针和C的指针唯一的区别就是C需要你自己管理和释放而go不需要, 你如果传指针进去指针指向的内容并发生了改变, 是会影响到函数外的变量的. 注意这里是需要指针指向的内容而不是指针本身, 所以你a,b=b,a 这里并不能实际改变函数外的变量