是否可以动态地将多个结构合并/合并为一个(使用反射)?

时间:2015-10-13 10:59:01

标签: json reflection go

我需要构建一个函数,将多个其他函数的响应合并为一个(struct)。目前我认为唯一的方法是创建一个map [string] interface {},然后在我需要合并的结构字段范围内并​​指定字段名称 - >值为关键,地图中的值。还有其他方法吗?我基本上只需要将两个结构嵌入到一个结构中。

1 个答案:

答案 0 :(得分:1)

我不确定这是否能解答您的问题,但您肯定可以将结构嵌入到一个结构中并直接访问属性。你不需要使用反射,我可以补充说,通常情况下,反射是不受欢迎的,因为它更可取于显性;反思往往是隐含的。

以下是一些代码,希望能够满足您的需求:

type Foo struct {
  Bar
  Baz
}

type Bar struct {
  BarValue string
}

type Baz struct {
  BazValue string
}

func main() {
  test := Foo{Bar: Bar{BarValue: "bar"}, Baz: Baz{BazValue: "baz"}}
  fmt.Println(test.BarValue)
  fmt.Println(test.BazValue)
}