Go中指针存储变量地址,通过定义指针类型,&获取变量地址,new(T)分配并返回T类型零值的指针,示例展示指针的声明、赋值及通过操作目标变量,强调安全性与简洁性。

在 Go 语言中,指针是一个存储变量内存地址的变量。理解如何定义和初始化指针是掌握 Go 内存模型和高效编程的关键一步。
Go 中通过在类型前加 * 来声明一个指针类型。例如:
var p *int var s *string
上面代码定义了两个指针变量:p 是指向 int 类型的指针,s 是指向 string 类型的指针。此时它们的值为 nil,因为未初始化。
要让指针指向某个变量,可以使用取地址符 &:
立即学习“go语言免费学习笔记(深入)”;
x := 42 p := &x // p 指向 x 的地址
此时 p 的值是变量 x 的内存地址,可以通过 *p 来读取或修改 x 的值:
fmt.Println(*p) // 输出 42 *p = 100 // 修改 x 的值为 100 fmt.Println(x) // 输出 100
Go 提供内置函数 new(T) 来创建并初始化一个类型为 T 的变量,并返回其地址:
p := new(int) *p = 42 fmt.Println(*p) // 输出 42
new(int) 分配一块足够存放 int 类型的空间,将其初始化为零值(0),然后返回地址。这种方式适合需要动态分配内存但不依赖已有变量的场景。
下面是一个完整的小例子,展示指针的定义、初始化与使用:
package main
import "fmt"
func main() {
var a *int // 声明指针,初始为 nil
b := 10 // 普通变量
a = &b // 指针指向 b 的地址
fmt.Println("b =", b) // 输出:b = 10
fmt.Println("a =", a) // 输出:a = 地址
fmt.Println("*a =", *a) // 输出:*a = 10
*a = 20 // 通过指针修改 b
fmt.Println("b =", b) // 输出:b = 20
c := new(int)
*c = 30
fmt.Println("*c =", *c) // 输出:*c = 30
}
基本上就这些。Go 的指针语法简洁,没有指针运算,安全性高。熟练使用 & 和 new 能帮助你更灵活地管理数据和函数参数传递。
以上就是Golang如何定义指针变量与初始化_Golang 指针变量初始化实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号