热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

获取通过接口获得的var的指针

如何解决《获取通过接口获得的var的指针》经验,为你挑选了1个好方法。

在以下代码中

var a int
var b interface{}

b = a

fmt.Printf("%T, %T \n", a, &a)
fmt.Printf("%T, %T \n", b, &b)

输出:

int, *int 
int, *interface {}

我希望&b的类型是int的指针.

我有两个问题:

1)为什么它是接口{}上的指针?

2)我怎样才能获得原始类型的指针?



1> icza..:

&b=>这是应用于变量的地址运算符b,其类型为interface{}.所以&b将是一个指向*interface{}变量的类型指针b.如果采用类型变量的地址T,结果将始终为类型*T.

你不能获得变量的地址ab,因为赋值:

b = a

只需将值复制ab.它包装了a类型的接口值中的值interface{},并将此接口值存储到其中b.此值完全脱离a.

通常,所有分配都会复制分配的值.Go中没有引用类型.如果你将ain 的地址存储b在第一位,最接近你想要的是,例如:

b = &a

然后你可以使用类型断言来获取这样a的地址b:

fmt.Printf("%T, %T \n", a, &a)
fmt.Printf("%T, %T \n", b, b.(*int))

输出(在Go Playground上试试):

int, *int
*int, *int

(注意:当你只是打印时b,因为它是一个接口类型,fmt包打印包含在其中的(具体)值.)

查看相关问题:

如何获取指向被屏蔽为接口的变量的指针?

用反射更改界面下的指针类型和值


推荐阅读
  • 首先使用下面的命令查询要卸载的文件名:dkpg-l然后再通过下面的命令卸载:dkpg-r*比如我们要卸载google的chrome浏览器:首先执行dkpg-l:root@lqm:homel ... [详细]
  • 背景1.结构体1.1depSet和finalCloserdepSet:记录db与conn之间的依赖关系,维持连接池以及关闭时使用finalCloser:TododepSetisaf ... [详细]
  • 长话短说,尝试利用Google的良好做法。我为Di计划使用Dagger2犯了一个错误。现在我被 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在此代码中:insert1(data:iFlower){returndata;}insert2(data:iFlower[]){ ... [详细]
  • 我们使用例如ActionListener的接口时,自己把那些函数定义了就行了。但是我不清楚是谁来调用这个函数呢?例如我自己定义一个接口:publicinterfaceMyInterfa ... [详细]
  • 设计模式六大原则(四):接口隔离原则(Interface Segregation Principle)
    接口隔离原则(ISP)定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和 ... [详细]
  • 由于工作需要,接手别人用bpel写的工作流程序,一点都不懂就到网上找到一篇入门的文章,觉得这篇不错,就copy下来并添加了读书笔计以红字标记,感激写此文章的人.许多开发人员觉得BPEL很神秘,不知道 ... [详细]
  • 我有一个不可编辑的NSTextField标签,它仅用于显示字符串。我通过界面构建​​器 ... [详细]
  • GPIO实现I2C从机的设计[2]
    在上篇文章中,实现了GPIO模拟I2C从机的初步设计,但在实际的使用过程中,发现了一些问题,为了解决实际传输过程中发生的数据传输错误问题,在本篇文章中,会根据实际测试情况对上篇的代码做一些修改。 ... [详细]
  • 新增和更新价目表行--目的:在已有的价目表头基础上,增加行信息--限制:该api有些问题,如果强制增加头信息,会有很多问题,所以该例子只是在已有头信息基础上,增加行信息 ... [详细]
  • Use从句的语法一、Use从句列出了所有使用到的单元的名称(不是源文件的名称)。Use从句出现在以下位置:-->.dpr文件的工程名称之后。-->.pas文 ... [详细]
  • Java动态代理的应用
    MathJax.Hub.Config({showMathMenu:false}); ... [详细]
  • 概要Clientsshouldnotbeforcedtodependuponinterfacesthattheydonotuse.不能强迫用户去依赖那些他们不使用的接 ... [详细]
author-avatar
mobiledu2502930533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有