util/reflect: fix StructFieldByTag
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		| @@ -46,9 +46,6 @@ func StructFieldByTag(src interface{}, tkey string, tval string) (interface{}, e | |||||||
| 		if ts, ok := fld.Tag.Lookup(tkey); ok { | 		if ts, ok := fld.Tag.Lookup(tkey); ok { | ||||||
| 			for _, p := range strings.Split(ts, ",") { | 			for _, p := range strings.Split(ts, ",") { | ||||||
| 				if p == tval { | 				if p == tval { | ||||||
| 					if val.Kind() != reflect.Ptr && val.CanAddr() { |  | ||||||
| 						val = val.Addr() |  | ||||||
| 					} |  | ||||||
| 					return val.Interface(), nil | 					return val.Interface(), nil | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| @@ -493,13 +490,14 @@ func btSplitter(str string) []string { | |||||||
| } | } | ||||||
|  |  | ||||||
| // queryToMap turns something like a[b][c]=4 into | // queryToMap turns something like a[b][c]=4 into | ||||||
| //   map[string]interface{}{ | // | ||||||
| //     "a": map[string]interface{}{ | //	  map[string]interface{}{ | ||||||
| // 		  "b": map[string]interface{}{ | //	    "a": map[string]interface{}{ | ||||||
| // 			  "c": 4, | //			  "b": map[string]interface{}{ | ||||||
| // 		  }, | //				  "c": 4, | ||||||
| // 	  }, | //			  }, | ||||||
| //   } | //		  }, | ||||||
|  | //	  } | ||||||
| func queryToMap(param string) (map[string]interface{}, error) { | func queryToMap(param string) (map[string]interface{}, error) { | ||||||
| 	rawKey, rawValue, err := splitKeyAndValue(param) | 	rawKey, rawValue, err := splitKeyAndValue(param) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|   | |||||||
| @@ -190,9 +190,9 @@ func TestStructFieldByTag(t *testing.T) { | |||||||
| 		t.Fatal(err) | 		t.Fatal(err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if v, ok := iface.(*[]string); !ok { | 	if v, ok := iface.([]string); !ok { | ||||||
| 		t.Fatalf("not *[]string %v", iface) | 		t.Fatalf("not *[]string %v", iface) | ||||||
| 	} else if len(*v) != 2 { | 	} else if len(v) != 2 { | ||||||
| 		t.Fatalf("invalid number %v", iface) | 		t.Fatalf("invalid number %v", iface) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user