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,这里进行了两次解引用
相关推荐
MemoleCard5 分钟前
深度解析Java当中的锁机制
后端
wear工程师13 分钟前
ThreadLocal 在线程池里为什么会串数据:别只会答内存泄漏
java·后端
Iruoyaoxh13 分钟前
栈和队列~
java·开发语言
Hrain-AI21 分钟前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
whyfail44 分钟前
前端学 Spring Boot(2):一次点击,如何穿过整个后端?
前端·spring boot·后端
wdfk_prog1 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort1231 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
slandarer1 小时前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图
mct1231 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
程序员cxuan3 小时前
Loop 还没玩明白,Graph Engineering 又火了。
人工智能·后端·程序员