diff --git a/filter/impl/generic_service_filter.go b/filter/impl/generic_service_filter.go index e180857ca509e765b360d47aa33d4a934b10c5b0..71d9d02fd7ea682b136604d66e6ed362c40a601e 100644 --- a/filter/impl/generic_service_filter.go +++ b/filter/impl/generic_service_filter.go @@ -64,16 +64,9 @@ func (ef *GenericServiceFilter) Invoke(invoker protocol.Invoker, invocation prot // oldParams convert to newParams for i := range argsType { var newParam interface{} - if argsType[i].Kind() == reflect.Ptr { - newParam = reflect.New(argsType[i].Elem()).Interface() - err = mapstructure.Decode(oldParams[i], newParam) - } else if argsType[i].Kind() == reflect.Struct || argsType[i].Kind() == reflect.Slice { - newParam = reflect.New(argsType[i]).Interface() - err = mapstructure.Decode(oldParams[i], newParam) - newParam = reflect.ValueOf(newParam).Elem().Interface() - } else { - newParam = oldParams[i] - } + newParam = reflect.New(argsType[i]).Interface() + err = mapstructure.Decode(oldParams[i], newParam) + newParam = reflect.ValueOf(newParam).Elem().Interface() if err != nil { logger.Errorf("[Generic Service Filter] decode arguments map to struct wrong") }