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,这里进行了两次解引用
相关推荐
〆、风神2 分钟前
Spring Boot 整合 Lock4j + Redisson 实现分布式锁实战
spring boot·分布式·后端
Asthenia04125 分钟前
Select、Poll、Epoll 详细分析与面试深度剖析/C代码详解
后端
安冬的码畜日常6 分钟前
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
开发语言·前端·人工智能·ai·扫雷游戏·ai辅助编程·辅助编程
烛阴8 分钟前
Node.js中必备的中间件大全:提升性能、安全与开发效率的秘密武器
javascript·后端·express
南雨北斗12 分钟前
WMware虚拟机下载方法(2025年4月)
后端
朝阳58128 分钟前
Rust项目GPG签名配置指南
开发语言·后端·rust
微网兔子29 分钟前
伺服器用什么语言开发呢?做什么用什么?
服务器·c++·后端·游戏
朝阳58130 分钟前
Rust实现高性能目录扫描工具ll的技术解析
开发语言·后端·rust
程高兴31 分钟前
基于Matlab的车牌识别系统
开发语言·matlab
小希爸爸1 小时前
2、中医基础入门和养生
前端·后端