问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Go 如何查看一个变量的内存地址 理解指针问题

发布网友 发布时间:2022-12-30 08:06

我来回答

1个回答

热心网友 时间:2023-10-08 06:25

熟悉C语言的同学都知道,查看一个变量的地址在处理指针的相关问题的时候直观重要,在C中直接取地址符& 即可。那么在Go语言中如何查看一个变量的地址,我们使用unsafe.Pointer() 函数来查看一个变量的内存地址。
举例:
type Vertex struct {
X, Y float64
}
func (v Vertex) sqrt() float64 {
return math.Sqrt(v.X * v.X + v.Y * v.Y)
}

func (v Vertex) scale(f float64) { //带号 和不带*号的区别 可以从内存地址来看出
fmt.printf("=======", unsafe.Pointer(v))//v 本身就是指针 存储的就是地址 不用取地址
v.X = x.X * f
v.Y = v.Y * f
}

func main() {
v := Vertex{3, 4}
fmt.printf("=======", unsafe.Pointer(&v))
v.scale(10)
fmt.Println(v.sqrt())
}
//带号 打印的结果 ====== -%!(EXTRA unsafe.Pointer=0xc00006e070)======%!(EXTRA unsafe.Pointer=0xc00006e070) 相同
//不带
号 打印的结果 ======%!(EXTRA unsafe.Pointer=0xc000094060)======%!(EXTRA unsafe.Pointer=0xc000094090) 不同
去掉*号 在scale()方法中要对 v 进行取地址操作

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 2、怎样查看指定地址存储器区域的内容? 李元芳是否爱如燕? 神探狄仁杰2的如燕最后和李元芳在一起了没? 男孩子打耳洞应该打在哪里? 去哪里打耳洞比较安全 耳洞打在哪里呢 宁波大学科技学院招生有什么要求,我是美术生 盛泽流浪狗收留中心地址 罗湖火车站到西安K446几点发车 qq邮箱自动转发等待验证 中信重工机械股份有限公司怎么样? 在洛阳有哪些月入5K可靠的工作? 洛阳中信重工正式工人的待遇是多少? 洛阳中信重工哪个职位好 洛阳中信重工伊滨区大家认为有前途吗? 沈阳师范大学的留校实习生是怎么回事儿呀,我幼师考大专考上该校可不可以留校? 师范生实习学院同意了自主实习教务处那边有影响吗 工作中常用的英语句子 变频器控制回路端子有根短接线是什么意思 请问一下股价负数什么意思 OPPO手机内存在什么位置可以查看的呢? /proc/iomem 查看物理内存分布 教育科研论文成果形式是什么? 课题成果形式怎么写 课题成果名称和成果形式怎么填 小红伞杀毒设置 小红伞杀毒软件怎么杀毒?我的只会隔离!不会杀吖!请高手指点! 微博视界大会哪里看回放 迷你世界十大最强的剑 燃气热水器进水阀拧不动怎么回事? steam国区怎么转阿根廷区,steam阿根廷区改回国区 steam之前买过港区游戏还能转到阿根廷吗 牛奶怎么画 简单 横版的数据如何变成竖版的呢? 吃西瓜有什么好处没有哦? 华陆到吉林省延吉市有汽车托运公司吗 【顺丰快递】快件在西安集散中心,准备送往下一站,到【吉林四平】还有多长时间 西安到吉林走哪条路最好 西安到黑龙江的物流需要几天 原创微博最多多少篇