指针
go语言也是有指针的,但是go语言的指针比较简单,主要体现在指针不能运算
var s int = 2
var pa *int = &s
*pa = 3
fmt.Println(s)
参数传递
值传递
值传递是指在调用函数时,将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,就不会影响到实际参数
引用传递
引用传递是指在调用函数时,将实际参数的地址传递到函数中,那么在函数中对参数进行修改,将会影响到实际参数
go是值传递还是引用传递?
- go语言只有值传递一种方式
- 凡是我们调函数;参数都要拷一份传递到函数中.
参数传递与指针
参数传递
func main() {
a, b := 1, 2
exchange(a, b)
// a,b调用exchange函数时是复制了一份a,b出来
// exchange函数内对a,b的操作不会影响main函数内的a,b
fmt.Println(a,b)// 1 2
}
func exchange(a,b int){
a,b = b,a
}
指针传递
func main() {
a, b := 1, 2
exchange1(&a,&b)
// 这里调用exchange1传过去的是两个指向a,b的指针
// 函数内将两个指针的指向互换位置,最后也会导致a,b值发生变化
fmt.Println(a,b) // 2,1
}
func exchange1(a,b *int){
*a,*b = *b,*a
}