当前位置: 首页 > 面试题库 >

如何将interface {}转换回其原始结构?

顾文昌
2023-03-14
问题内容

我需要一种将结构/接口动态转换回其原始对象的方法。我可以在其中添加方法/函数。基本上我需要这样的东西:

MyStruct  =>  Interface{}  => MyStruct

在最后一次转换时,除了该结构内部的内容外,我对原始结构一无所知,所以我不能只是这样:

a.(MyStruct)

问题答案:

否:如本主题所述

Go既不是协变也不是协变。类型 相等
或不 相等

您必须将结构拆开并处理碎片,或者使用反射。
类型断言只是“ 断言
”,而不是任何类型的“强制”。

另请参阅此线程,它提醒我们:

  • 指针是一种类型。
  • 结构是另一种类型。
  • 整数是另一种类型。
  • 浮点数是另一种类型。
  • 布尔值是另一种类型。

接口的原理与类型关联的方法有关,与类型T无关T

接口类型由一组方法定义。
可以将实现方法的任何值分配给该类型的接口值。

这将使从接口到具体类型的转换变得非常困难。



 类似资料:
  • 问题内容: 我使用以下代码将密钥转换为字节 现在如何从中获取密钥?我试过了: 我收到以下错误: 问题答案: 这应该工作

  • 我有模量 目前,我正在提取完整的260个字节(指数为4个字节,模数为256个字节)并编码为base 64。我使用以下shell命令这样做: 这给我以下字符串: 现在,当我拿钥匙的时候。pem密钥对表示模数 我得到这个字符串(我已经省略了标题 您可以看到,我提取的密钥数据和base64编码的密钥数据实际上存在于从密钥中提取的有效公钥数据的数据中。pem使用openssl。然而,开头有45个字符,我自

  • 问题内容: 我正在使用docopt来解析命令行参数。此方法有效,并生成地图,例如 现在,我想将and和值连接到一个字符串,两个值之间用冒号表示。基本上,诸如: 不幸的是,这不起作用,因为我收到了错误消息: 无效的操作:arguments [“”] +“:”(类型不匹配的接口{}和字符串) 因此,显然我需要将从映射中获得的值(就是,所以可以是任何东西)转换为字符串。现在我的问题是,我该怎么做? 问题

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“

  • 问题内容: 我正在尝试从JSON获取值并将其强制转换为int,但它不起作用,而且我不知道如何正确执行。 这是错误消息: 和代码: 问题答案: 代替 你想要一个类型断言: 您不能转换接口类型值的原因是参考的规范部分中的以下规则: 转换是形式的表达式,其中是类型,并且是可以转换为类型T的表达式。 … 在以下任何一种情况下,可以将非恒定值x转换为类型T: x可分配给T。 x的类型和T具有相同的基础类型。

  • 我在Java中有一个tiff图像的INT[2048][2048]原始数据数组。我想把那个数组转换回BufferedImage。我该如何进行?