GO-指针:引用、解引用、指针传递

GO-指针:引用、解引用、指针传递
怀光指针是 Go 语言中非常重要的概念之一。它允许我们直接操作变量的内存地址,从而实现更高效的内存管理。Go
语言中的指针可以进行引用、解引用,还可以用作函数参数来实现指针传递。
1. 指针的引用
在 Go 语言中,可以使用 &
操作符来获取变量的地址,从而创建指向该变量的指针。
1 | var x int = 10 |
在上述代码中,ptr
是一个指针,指向变量 x
的内存地址。*int
表示 ptr
是一个指向整数类型的指针。
2. 指针的解引用
指针保存的是地址,要获取指针指向的值,可以使用 *
操作符。这种操作被称为“解引用”。
1 | fmt.Println(*ptr) // 输出指针 ptr 所指向的值,即变量 x 的值 |
通过解引用操作,可以直接修改指针所指向变量的值,从而实现对原始数据的直接操作。
3. 指针传递
在 Go 中,函数参数默认是值传递,也就是说,函数接收的是参数的副本而不是原始数据。如果希望函数修改原始变量的值,可以传递指针。
1 | func increment(num *int) { |
在上面的示例中,increment
函数接收一个整数指针,通过指针修改原始数据的值。
4. 指针的应用示例
以下是一个综合示例,演示了引用、解引用和指针传递:
1 | package main |
在这个例子中,increaseAge
函数接收 Person
的指针参数,并通过指针修改 Age
字段的值。这种方式可以避免结构体的拷贝,提升代码效率。