go语言指针不能运算
值传递做了一份拷贝,拷贝完了main函数中调用值不会被改变
引用传递不做拷贝,main函数中调用的函数会被改变原值
go语言是值传递?引用传递?
只有值传递一种方式,用指针来实现引用传递,要改变变量的值需要传指针
func swap(a,b int){
a,b=b,a
}
func main() {
a,b:=3,4
swap(a,b)
fmt.Println(a,b)
}
因为是值传递,结果是3,4未交换
func swap1(a,b *int){
*a,*b=*b,*a
}
func main() {
a,b:=3,4
swap1(&a,&b)
fmt.Println(a,b)
}
由指针形成引用传递,结果是4,3已交换
因为指针不直观,我们可以把结果直接返回,就能得到正确结果
func swap2(a,b int) (int,int) {
return b,a
}
func main() {
a,b:=3,4
swap2(a,b)
fmt.Println(a,b)
}