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

埃米尔:

我想知道,当一个结构包含另一个结构时,是否有一种简便的方法可以将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

但是如果有很多领域,我将不得不写许多作业。没有其他分配方法,还有其他方法可以处理吗?

一言以蔽之,有没有像b = _.omit(a, 'Field2')JavaScript 一样的东西

阿德里安:

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

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

  • 自己写作业(可能是最好的表现)
  • 使用反射根据字段名称从一个复制到另一个
  • 诸如将一种类型的数据编组为JSON然后解组为另一种类型(这基本上是在幕后使用纯文本中间人在幕后进行反射,因此效率更低,但您只需做很少的工作即可完成)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章