@@ -28,7 +28,7 @@ func BindFields(obj interface{}) Fields {
2828 for i := 0 ; i < t .NumField (); i ++ {
2929 field := t .Field (i )
3030
31- tag := extractTag (field . Tag )
31+ tag := extractTag (field )
3232 if tag == "-" {
3333 continue
3434 }
@@ -130,7 +130,7 @@ func extractValue(originTag string, obj interface{}) interface{} {
130130
131131 for j := 0 ; j < val .NumField (); j ++ {
132132 field := val .Type ().Field (j )
133- found := originTag == extractTag (field . Tag )
133+ found := originTag == extractTag (field )
134134 if field .Type .Kind () == reflect .Struct {
135135 itf := val .Field (j ).Interface ()
136136
@@ -152,10 +152,14 @@ func extractValue(originTag string, obj interface{}) interface{} {
152152 return nil
153153}
154154
155- func extractTag (tag reflect.StructTag ) string {
156- t := tag .Get (TAG )
157- if t != "" {
155+ func extractTag (strct reflect.StructField ) string {
156+ t := strct .Tag .Get (TAG )
157+ switch {
158+ case t != "" : //work as tags specified
158159 t = strings .Split (t , "," )[0 ]
160+ case strct .Anonymous : //embedding
161+ default :
162+ t = strings .ToLower (strct .Name )
159163 }
160164 return t
161165}
@@ -167,7 +171,7 @@ func BindArg(obj interface{}, tags ...string) FieldConfigArgument {
167171 for i := 0 ; i < v .NumField (); i ++ {
168172 field := v .Type ().Field (i )
169173
170- mytag := extractTag (field . Tag )
174+ mytag := extractTag (field )
171175 if inArray (tags , mytag ) {
172176 config [mytag ] = & ArgumentConfig {
173177 Type : getGraphType (field .Type ),
0 commit comments