diff --git a/utils/utils.go b/utils/utils.go index 77f8be00..b3cb35a0 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -201,3 +201,14 @@ func TrimBlanChar(str string) string { return strValue == " " || strValue == "\t" || strValue == "\n" || strValue == "\r" }) } + +func RemoveGeneralMapKeys(obj map[string]interface{}, keys ...string) map[string]interface{} { + if obj != nil { + for _, key := range keys { + if _, ok := obj[key]; ok { + delete(obj, key) + } + } + } + return obj +} diff --git a/utils/utils_test.go b/utils/utils_test.go index 0153884a..e5d8c135 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -102,3 +102,26 @@ func TestFilterMb4(t *testing.T) { t.Fatal("FilterMb4 can not filter mb4 characters") } } + +func TestRemoveGeneralMapKeys(t *testing.T) { + obj1 := map[string]interface{}{ + "key1": 1, + "key2": "2", + "key3": 3, + "key4": nil, + } + obj11 := RemoveGeneralMapKeys(obj1, "key2", "key3", "key4") + if obj11["key1"] != 1 { + t.Fatal("RemoveGeneralMapKeys doesn't keep key correctly") + } + if _, ok := obj11["key2"]; ok { + t.Fatal("RemoveGeneralMapKeys doesn't remove key correctly") + } + if _, ok := obj11["key4"]; ok { + t.Fatal("RemoveGeneralMapKeys doesn't remove key correctly") + } + t.Log(obj11) + if RemoveGeneralMapKeys(nil, "key1") != nil { + t.Fatal("RemoveGeneralMapKeys handle nil wrong") + } +}