On Fri, Aug 23, 2019 at 9:25 PM Lee Rick <blade2i...@gmail.com> wrote: > > i want to do > type A struct{ Name string} > type B struct{Age int} > type C struct{Address string} > > a, b, c := A{}, B{},C{} > have a function > d1 := merge(a,b) //d1 like struct{Name string, Age int} > d2 := merge(a,c) //d2 like struct{Name string, Address string} > d3 := merge(b,c) //d3 like struct{Age int, Address string}
You cannot have a function that merges two structs and returns a new one, but you can have structs that are compositions of other structs. type AB struct { A B } Struct AB is a struct containing both A and B. You can access the members of A and B as though they're members of AB. ab:=AB{} ab.Name="a" ab.Age=1 This is also valid: ab.A.Name="a" ab.B.Age=1 Initialization has to be explicit though: ab:=AB{A:A{Name:"name"}, B:B{Age:1}} > > > how to realize merge function? anyone can give me a demo > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/9d0f4159-146b-4d5b-91c0-8846445a84d4%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAMV2Rqrw7t59H7B8d3bsbskNBhwBXMyR6tMar9Q_xBAZCbsSOA%40mail.gmail.com.