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.

Reply via email to