Go语言中指针用于存储变量内存地址,通过声明指向类型T的指针,使用&获取变量地址,如var ptr int = #解引用用操作符访问值,修改ptr即修改原变量;new(T)函数分配零值并返回地址;函数传参时传指针可修改原值且避免复制大对象;Go指针不支持运算,语法简洁且更安全。

Go语言中的指针与其他C系语言类似,用于存储变量的内存地址。掌握指针的声明与使用,有助于更高效地处理数据和函数传参。
指针的声明方式
在Go中,使用星号 *T 表示指向类型 T 的指针。声明指针时,通常通过取地址操作符 & 获取变量地址。
例如:
var num int = 42var ptr *int = &num
这里 ptr 是一个指向整型的指针,保存了 num 的内存地址。
立即学习“go语言免费学习笔记(深入)”;
指针的解引用操作
通过 * 操作符可以访问指针所指向的值,这称为“解引用”。
继续上面的例子:
fmt.Println(*ptr) // 输出 42*ptr = 100
fmt.Println(num) // 输出 100
修改 *ptr 实际上就是修改 num 的值,因为指针指向的是该变量的内存位置。
new函数创建指针
Go提供内置函数 new(T) 来动态分配类型 T 的零值,并返回其地址。
示例:
ptr := new(int)*ptr = 200
fmt.Println(*ptr) // 输出 200
这种方式常用于需要初始化复杂结构体或在函数中返回局部变量地址的场景。
指针在函数传参中的应用
Go默认按值传递参数。若需在函数内部修改原始变量,应传入指针。
例如:
func increment(p *int) {*p++
}
val := 5
increment(&val)
fmt.Println(val) // 输出 6
这样避免了复制大对象,也实现了对原值的修改。
基本上就这些。Go的指针语法简洁,不支持指针运算,增强了安全性。合理使用指针能提升程序性能与灵活性。










