fix config nil error

This commit is contained in:
Jeff
2019-09-23 14:00:56 +08:00
committed by zryfish
parent 3dca9feb0f
commit 468f7eddca
18 changed files with 68 additions and 23 deletions

View File

@@ -37,22 +37,23 @@ func In(value interface{}, container interface{}) bool {
}
func Override(left interface{}, right interface{}) {
if left == nil || right == nil {
if reflect.ValueOf(left).IsNil() || reflect.ValueOf(right).IsNil() {
return
}
if reflect.ValueOf(left).Type().Kind() != reflect.Ptr ||
reflect.ValueOf(right).Type().Kind() != reflect.Ptr {
reflect.ValueOf(right).Type().Kind() != reflect.Ptr ||
reflect.ValueOf(left).Kind() != reflect.ValueOf(right).Kind() {
return
}
old := reflect.ValueOf(left).Elem()
new := reflect.ValueOf(right).Elem()
oldVal := reflect.ValueOf(left).Elem()
newVal := reflect.ValueOf(right).Elem()
for i := 0; i < old.NumField(); i++ {
val := new.Field(i).Interface()
for i := 0; i < oldVal.NumField(); i++ {
val := newVal.Field(i).Interface()
if !reflect.DeepEqual(val, reflect.Zero(reflect.TypeOf(val)).Interface()) {
old.Field(i).Set(reflect.ValueOf(val))
oldVal.Field(i).Set(reflect.ValueOf(val))
}
}
}