指针
go语言中的指针还是比较好理解的
操作符号是 : & *
& 是取地址
*指针类型
取地址:
var str = "hello"
p := &str
fmt.Println(p)
//输出
//0xc0000881e0
实现的操作就是 把变量str的内存地址 放入到p变量中
指针取值
var str = "hello"
p := &str
z :=*p
fmt.Println(z)
//输出
//hello
实现的操作就是: 得到变量P地址的值
demo
func main() {
a := 10
t1(a)
fmt.Println(a)
t2(&a)
fmt.Println(a)
}
func t1 (x int) {
x++
}
func t2 (x *int) {
*x++
}
//输出
//10
//11
当我们没有使用指针类型进行操作时 调用 t1 函数后 a 的值还是10
当我们使用指针类型进行操作时 调用 t2 函数后 a 的值是11
这点可以理解为 指针操作将值传递变成了引用传递