当一个结构包含另一个结构时,如何将一个结构转换为另一个结构?

时间:2018-01-12 21:49:12

标签: go struct

我想知道当一个结构包含另一个结构时,是否有简单的方法可以在Go中从一个结构转换为另一个结构。

例如

type Type1 struct {
  Field1 int
  Field2 string
}

type Type2 struct {
  Field1 int
}

我知道它可以像这样处理

var a Type1{10, "A"}
var b Type2
b.Field1 = a.Field1

但是如果有很多字段,我将不得不写很多作业。有没有其他方法可以在没有多次分配的情况下处理它?<​​/ p>

总之,javascript中有b = _.omit(a, 'Field2')这样的内容吗?

1 个答案:

答案 0 :(得分:2)

不直接,不。您只能在相同类型之间自由转换。

您可以针对此类问题获得各种级别的解决方案:

  • 自己编写作业(可能是最佳表现)
  • 使用反射根据字段名称从一个复制到另一个
  • 快速和肮脏的东西,比如将一种类型编组为JSON然后解组为另一种类型(基本上使用带有明文中间人的引擎下的反射,所以效率更低,但可以通过很少的工作来完成部分)