Skip to content

Commit 53f3754

Browse files
committed
Refactor
1 parent f8acd9d commit 53f3754

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

defaults.go

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -171,26 +171,22 @@ func setField(field reflect.Value, defaultVal string) error {
171171
case reflect.Map:
172172
for _, e := range field.MapKeys() {
173173
var v = field.MapIndex(e)
174-
var baseVal interface{}
174+
175175
switch v.Kind() {
176176
case reflect.Ptr:
177-
baseVal = v.Elem().Interface()
178-
default:
179-
baseVal = v.Interface()
180-
}
181-
ref := reflect.New(reflect.TypeOf(baseVal))
182-
ref.Elem().Set(reflect.ValueOf(baseVal))
183-
err := Set(ref.Interface())
184-
if err == nil || err == errInvalidType {
185-
var newVal reflect.Value
186-
if v.Kind() == reflect.Ptr {
187-
newVal = reflect.ValueOf(ref.Interface())
188-
} else {
189-
newVal = reflect.ValueOf(ref.Elem().Interface())
177+
switch v.Elem().Kind() {
178+
case reflect.Struct, reflect.Slice, reflect.Map:
179+
if err := setField(v.Elem(), ""); err != nil {
180+
return err
181+
}
190182
}
191-
field.SetMapIndex(e, newVal)
192-
} else {
193-
return err
183+
case reflect.Struct, reflect.Slice, reflect.Map:
184+
ref := reflect.New(v.Type())
185+
ref.Elem().Set(v)
186+
if err := setField(ref.Elem(), ""); err != nil {
187+
return err
188+
}
189+
field.SetMapIndex(e, ref.Elem().Convert(v.Type()))
194190
}
195191
}
196192
}

0 commit comments

Comments
 (0)