2015-10-13 54 views
-4

我需要构建一个函数,将来自多个其他函数的响应合并到一个(结构)中。目前我认为唯一的方法是创建一个map [string] interface {},然后覆盖我需要合并的结构字段并在字段中分配字段名称 - > value作为键值。有没有其他方法?我基本上只需要将两个结构嵌入到一个结构中。是否有可能将多个结构动态合并/合并为一个(使用反射)?

+2

我不确定我是否理解这个问题。也许你应该展示你想合并成什么的代码。 – Volker

回答

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) 
}