当前位置: 首页 > article >正文

Golang |* 和

在 Golang(Go 语言)中,*& 主要用于指针操作,它们的作用如下:

1. &(取地址符)

& 用于获取变量的内存地址(即指针)。

package main
import "fmt"

func main() {
    a := 10
    p := &a  // 获取变量 a 的地址,p 是一个指向 a 的指针
    fmt.Println("a 的值:", a)
    fmt.Println("a 的地址:", &a)
    fmt.Println("p 的值(即 a 的地址):", p)
}

输出示例(地址因环境不同而变化):

a 的值: 10
a 的地址: 0xc000014088
p 的值(即 a 的地址): 0xc000014088

2. *(指针解引用)

* 用于指针解引用,即通过指针访问指针指向的值。

package main
import "fmt"

func main() {
    a := 10
    p := &a    // p 是指向 a 的指针
    fmt.Println("p 指向的值:", *p) // 解引用 p,获取 a 的值

    *p = 20   // 通过指针修改 a 的值
    fmt.Println("修改后 a 的值:", a)
}

输出:

p 指向的值: 10
修改后 a 的值: 20

3. * 还用于声明指针类型

在声明指针变量时,* 用于指定变量是指针类型。例如:

var p *int  // 声明一个 int 类型的指针变量 p

只有在解引用时,*p 才表示指针指向的值。


4. 总结区别

符号作用
&取地址,获取变量的内存地址
*解引用指针,获取指针指向的值,也用于声明指针类型

如果你对指针的理解还不太清楚,可以思考:

  • &a 相当于 “我要 a 的地址”。
  • *p 相当于 “我要 p 指向的值”。

希望这能帮助你理解 *& 的区别!


http://www.kler.cn/a/584865.html

相关文章:

  • 车载以太网测试-9【网络层】-子网划分的子网掩码VLAN
  • SQLAlchemy系列教程:如何执行原生SQL
  • 【漫话机器学习系列】135.随机森林(Random For Forest)
  • 01 | Go 项目开发极速入门课介绍
  • 【Go语言圣经1.1】
  • Android 自定义蓝牙扫描动画:多波浪扩散效果
  • elementui table 自动滚动 纯js实现
  • 基于威胁的安全测试值得关注,RASP将大放异彩
  • HTML网上商城项目(sqlite3)
  • python迭代器生成器
  • 5周0基础冲刺蓝桥杯省重点 2
  • nginx中忽略已.开头的文件
  • 全面解析与实用指南:如何有效解决ffmpeg.dll丢失问题并恢复软件正常运行
  • 【AI智能体报告】开源AI助手的革命:OpenManus深度使用报告
  • mysql多实例及单实例安装脚本
  • k8s面试题总结(十五)
  • Docker根目录迁移与滚动日志设置
  • react和vue 基础使用对比
  • 数据库MySQL原理(相关程序)
  • 瞭解安全防火牆術語(適合剛接觸Firepower的使用者)