Go语言指针的解引用和间接引用

在 Go 语言中,"解引用"和"间接引用"是与指针相关的概念。

  1. 解引用 (Dereferencing):

解引用是指通过指针访问它所指向的变量的值。在 Go 中,使用星号(*)来解引用一个指针。

例如:

go 复制代码
var x int = 10
var p *int = &x  // p 是指向 x 的指针
fmt.Println(*p)  // 输出 10,这里的 *p 就是解引用
*p = 20          // 通过解引用修改 x 的值
fmt.Println(x)   // 输出 20
  1. 间接引用 (Indirect reference):

间接引用通常指通过指针间接地引用或访问某个值。这个概念与解引用密切相关,因为你正是通过解引用来进行间接引用的。

例如:

go 复制代码
type Person struct {
    Name string
    Age  int
}

var person Person = Person{"Alice", 30}
var ptr *Person = &person

fmt.Println(ptr.Name)  // 输出 "Alice",这是间接引用
// 上面的语句等同于 (*ptr).Name,但 Go 允许我们直接使用 ptr.Name

在这个例子中,ptr.Name 是一个间接引用,我们通过指针 ptr 间接地访问了 personName 字段。

  1. 多级指针:

Go 也支持多级指针,这时解引用和间接引用可能会变得更复杂:

go 复制代码
var x int = 10
var p *int = &x
var pp **int = &p

fmt.Println(**pp)  // 输出 10,这里进行了两次解引用
相关推荐
万少1 天前
DeepSeek 昨晚刚开源了 Harness:附万少的2 万字保姆级教程
前端·后端·架构
m0_720245011 天前
1543.统计好三元组(简单)
开发语言·算法
大鸡腿同学1 天前
身弱体质|你的 FM 该关了📻
后端
叠层归一研究院1 天前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生1 天前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
Csvn1 天前
📊 SQL 入门 Day 18:索引原理
后端·sql
Csvn1 天前
🐍 Day3 : Python 容器精讲 — list、dict、set、tuple 底层实现与高级操作
后端·python
用户938515635071 天前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
用户938515635071 天前
深入理解 Next.js:从 SPA 的 SEO 问题到约定式路由与 SSR 原理
前端·后端·全栈
weixin-a153003083161 天前
python-装饰器
开发语言·python