From 2c1ea7e0b07a9f77ce23d54fed9addd0593c6bf5 Mon Sep 17 00:00:00 2001
From: pantianying <601666418@qq.com>
Date: Mon, 5 Aug 2019 20:54:29 +0800
Subject: [PATCH] fix code

---
 config/reference_config.go                     | 5 +++--
 examples/general/dubbo/go-client/app/client.go | 2 +-
 filter/impl/generic_filter.go                  | 4 ++--
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/config/reference_config.go b/config/reference_config.go
index 4f2bdbbc2..db51dd291 100644
--- a/config/reference_config.go
+++ b/config/reference_config.go
@@ -171,10 +171,11 @@ func (refconfig *ReferenceConfig) getUrlMap() url.Values {
 	urlMap.Set(constant.ENVIRONMENT_KEY, consumerConfig.ApplicationConfig.Environment)
 
 	//filter
-	urlMap.Set(constant.REFERENCE_FILTER_KEY, mergeValue(consumerConfig.Filter, refconfig.Filter, constant.DEFAULT_REFERENCE_FILTERS))
+	var defaultReferenceFilter = constant.DEFAULT_REFERENCE_FILTERS
 	if refconfig.Generic {
-		urlMap.Set(constant.REFERENCE_FILTER_KEY, mergeValue(consumerConfig.Filter, refconfig.Filter, constant.GENERIC_REFERENCE_FILTERS))
+		defaultReferenceFilter = defaultReferenceFilter + constant.DEFAULT_REFERENCE_FILTERS
 	}
+	urlMap.Set(constant.REFERENCE_FILTER_KEY, mergeValue(consumerConfig.Filter, refconfig.Filter, defaultReferenceFilter))
 
 	for _, v := range refconfig.Methods {
 		urlMap.Set("methods."+v.Name+"."+constant.LOADBALANCE_KEY, v.Loadbalance)
diff --git a/examples/general/dubbo/go-client/app/client.go b/examples/general/dubbo/go-client/app/client.go
index 956ab7466..b7ee0e662 100644
--- a/examples/general/dubbo/go-client/app/client.go
+++ b/examples/general/dubbo/go-client/app/client.go
@@ -301,7 +301,7 @@ func test3() {
 
 	time.Sleep(3 * time.Second)
 	println("\n\n\nstart to generic invoke")
-	resp, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke([]interface{}{"GetUser", []string{"java.lang.String"}, "A003"})
+	resp, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke([]interface{}{"GetUser", []string{"java.lang.String"}, []interface{}{"A003"}})
 	if err != nil {
 		panic(err)
 	}
diff --git a/filter/impl/generic_filter.go b/filter/impl/generic_filter.go
index f65e51ddd..12cb4c7fa 100644
--- a/filter/impl/generic_filter.go
+++ b/filter/impl/generic_filter.go
@@ -81,7 +81,7 @@ func struct2MapAll(obj interface{}) interface{} {
 	t := reflect.TypeOf(obj)
 	v := reflect.ValueOf(obj)
 	if t.Kind() == reflect.Struct {
-		result := make(map[string]interface{})
+		result := make(map[string]interface{}, t.NumField())
 		for i := 0; i < t.NumField(); i++ {
 			if v.Field(i).Kind() == reflect.Struct {
 				if v.Field(i).CanInterface() {
@@ -100,7 +100,7 @@ func struct2MapAll(obj interface{}) interface{} {
 		return result
 	} else if t.Kind() == reflect.Slice {
 		value := reflect.ValueOf(obj)
-		var newTemps []interface{}
+		var newTemps = make([]interface{}, 0, value.Len())
 		for i := 0; i < value.Len(); i++ {
 			newTemp := struct2MapAll(value.Index(i).Interface())
 			newTemps = append(newTemps, newTemp)
-- 
GitLab