go 语言指针
go 语言的参数传递全部都是 值传递
- 用一个交换的例子学习指针
package main
import "fmt"
/*
指针
*/
// go 参数传递是 值传递 还是引用传递呢
// go 参数传递全部都是 ------> 值传递
func swapP(a, b *int) {
// 2
*a, *b = *b, *a
}
func swap2(a, b int) (int , int) {
// 3
return b, a // 返回的时候交换一下位置
}
func swap(a, b int) {
// 1
a, b = b, a
}
func main() {
var a int = 2
var pa *int = &a // &a 是取变量a的地址
*pa = 3
fmt.Println(a) // 3 指针发挥作用 指针不能运算
b := 4
swap(a, b)
fmt.Println(a, b) // 值传递结果就是3, 4 修改了也没用 因为传递的是值
// ----------
//swapP(&a, &b)
//fmt.Println(a, b) // 通过指针交换可以修改 结果为: 4,3
// ---------
a, b = swap2(a, b) // 通过交换返回值交换 结果为: 4,3
fmt.Println(a, b) // 注意上边一定是注释掉的 否则结果就变回原来的 3, 4 了交换了两次有回到最初状态了
}
网友评论