util/reflect: fix StructFieldByTag
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
4e99680c30
commit
1a1459dd0e
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user