@@ -87,9 +87,11 @@ type (
8787 }
8888
8989 fieldConfigImpl struct {
90- name string
91- typ interface {}
92- tag string
90+ name string
91+ pkg string
92+ typ interface {}
93+ tag string
94+ anonymous bool
9395 }
9496
9597 dynamicStructImpl struct {
@@ -132,18 +134,23 @@ func MergeStructs(values ...interface{}) Builder {
132134 for i := 0 ; i < valueOf .NumField (); i ++ {
133135 fval := valueOf .Field (i )
134136 ftyp := typeOf .Field (i )
135- builder .AddField ( ftyp .Name , fval .Interface (), string (ftyp .Tag ))
137+ builder .( * builderImpl ). addField ( ftyp .Name , ftyp . PkgPath , fval .Interface (), string (ftyp .Tag ), ftyp . Anonymous )
136138 }
137139 }
138140
139141 return builder
140142}
141143
142144func (b * builderImpl ) AddField (name string , typ interface {}, tag string ) Builder {
145+ return b .addField (name , "" , typ , tag , false )
146+ }
147+
148+ func (b * builderImpl ) addField (name string , pkg string , typ interface {}, tag string , anonymous bool ) Builder {
143149 b .fields = append (b .fields , & fieldConfigImpl {
144- name : name ,
145- typ : typ ,
146- tag : tag ,
150+ name : name ,
151+ typ : typ ,
152+ tag : tag ,
153+ anonymous : anonymous ,
147154 })
148155
149156 return b
@@ -182,9 +189,11 @@ func (b *builderImpl) Build() DynamicStruct {
182189
183190 for _ , field := range b .fields {
184191 structFields = append (structFields , reflect.StructField {
185- Name : field .name ,
186- Type : reflect .TypeOf (field .typ ),
187- Tag : reflect .StructTag (field .tag ),
192+ Name : field .name ,
193+ PkgPath : field .pkg ,
194+ Type : reflect .TypeOf (field .typ ),
195+ Tag : reflect .StructTag (field .tag ),
196+ Anonymous : field .anonymous ,
188197 })
189198 }
190199
0 commit comments