一尘不染

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

go

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

MyStruct  =>  Interface{}  => MyStruct

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

a.(MyStruct)

阅读 161

收藏
2020-07-02

共1个答案

一尘不染

否:如本主题所述

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

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

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

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

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

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

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

2020-07-02